我想将文档快照列表转换为UserData列表。
ViewModel中的 updateUsers()
应该返回UserData的LiveData列表。
因此,我使用它和一个仓库来在Firestore中获取集合中的所有用户:
class ListUsersLiveData(private val query: Query)
: LiveData<List<DocumentSnapshot?>>(), EventListener<QuerySnapshot>{
.....
.....
override fun onEvent(snapshot: QuerySnapshot?, e: FirebaseFirestoreException?) {
val documents : List<DocumentSnapshot> = snapshot!!.documents
postValue(documents)
}
}
在ViewModel中(我的UserData对象有两个字符串,名称和电话):
fun updateUsers(): LiveData<List<UserData>> {
val liveData = repo.getAllUsers() // return list of Documents Snapshots
return Transformations.map(liveData, { snap: List<DocumentSnapshot?> ->
//how do i transform the live data in the right way?
//this is something i was trying but it doesnt work
UserData(snap.get("name").toString(),snap.get("phone").toString())
})
}
我无法完全理解该操作,感谢您的帮助。
答案 0 :(得分:0)
由于嵌套的地图,我不知道这是否是最好的方法,但是我这样做是可行的,
fun updateUsers(): LiveData<List<UserData>> {
val liveData = repo.getAllUsers()
return Transformations.map(liveData) { snap: List<DocumentSnapshot?> ->
snap.map { user->
UsuarioData(user!!.get("name").toString(),user.get("phone").toString())
}
}
}