【发布时间】:2020-04-30 22:36:39
【问题描述】:
我有一个包含用户列表的 LiveData 对象,我正在尝试将数据传输到另一个 LiveData 对象以在其他地方使用。
我将 MVVM 与 Room 一起使用,因此我从数据库和 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
视图模型:
val list2: LiveData<List<User>> = repo.getAll()
var liveList: LiveData<ArrayList<Person>> = MutableLiveData()
liveList = Transformations.map(list2) { list ->
val newList: ArrayList<Person> = ArrayList()
list?.forEach {
val temp = Person()
temp.firstName = it.firstName
temp.age = it.age
newList.add(temp)
}
return@map newList
}
但当我运行它时,它会崩溃或不更新 UI。
谢谢!
【问题讨论】:
标签: android kotlin android-livedata android-jetpack