我有一个LiveData对象,该对象包含一个用户列表,我正尝试将数据传输到另一个LiveData对象,以在其他地方使用。
我在Room中使用MVVM,所以我从数据库和ViewModel上获取LiveData,我试图将LiveData中的User对象转换为Person对象以显示在UI中。
所以我有一个变量是LiveData<List<User>>
class User(var firstName: String, var lastName: String, var age: Integer)
并且我正在尝试将其转换为LiveData<List<Person>>
(例如)
class Person() {
lateinit var firstName: String
lateinit var age: Integer
}
而且我尝试更改它们的方法是使用LiveData Transformations.map
ViewModel:
val list2: LiveData<List<User>> = repo.getAll()
var liveList: LiveData<ArrayList<Person>> = MutableLiveData()
liveList = Transformations.map(list2) { list ->
val newList: ArrayList<WeatherInfo> = ArrayList()
list?.forEach {
val temp = WeatherInfo()
temp.firstName = it.firstName
temp.age = it.age
newList.add(temp)
}
return@map newList
}
但是当我运行它时,它崩溃或不更新UI。
谢谢!
您的地图有些混乱。应该是Person而不是WeatherInfo:
liveList = Transformations.map(list2) { list ->
val newList: List<Person> = ArrayList()
list?.forEach {
val temp = Person()
temp.firstName = it.firstName
temp.age = it.age
newList.add(temp)
}
return@map newList
}
并且您应该检查logcat以查看崩溃信息。