Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将文档快照列表转换为对象列表?_Android_Kotlin_Google Cloud Firestore - Fatal编程技术网

Android 如何将文档快照列表转换为对象列表?

Android 如何将文档快照列表转换为对象列表?,android,kotlin,google-cloud-firestore,Android,Kotlin,Google Cloud Firestore,我想将文档快照列表转换为用户数据列表 ViewModel中的updateUsers()应返回用户数据的LiveData列表 所以我使用这个和一个repo来获取firestore集合中的所有用户: class ListUsersLiveData(private val query: Query) : LiveData<List<DocumentSnapshot?>>(), EventListener<QuerySnapshot>{ .....

我想将文档快照列表转换为用户数据列表

ViewModel中的
updateUsers()
应返回用户数据的LiveData列表

所以我使用这个和一个repo来获取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)
   }
}
类ListUsersLiveData(私有val查询:查询)
:LiveData(),EventListener{
.....
.....
覆盖fun OneEvent(快照:QuerySnapshot?,e:FirebaseFirestoreException?){
val文档:列表=快照!!.documents
邮政价值(文件)
}
}
在ViewModel中(my UserData obejct有两个字符串,name和phone):

fun updateUsers():LiveData{
val liveData=repo.getAllUsers()//返回文档快照列表
返回Transformations.map(liveData,{snap:List->
//如何以正确的方式转换实时数据?
//这是我一直在尝试的东西,但它不起作用
用户数据(snap.get(“name”).toString(),snap.get(“phone”).toString())
})
}

我无法完全理解如何进行此操作,非常感谢您的帮助。

由于嵌套贴图,我不知道这是否是最好的方法,但我是这样做的,并且有效:

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())
            }
    }
}
fun updateUsers():LiveData{
val liveData=repo.getAllUsers()
返回Transformations.map(liveData){snap:List->
snap.map{user->
UsuarioData(user!!.get(“name”).toString(),user.get(“phone”).toString())
}
}
}

您现在拥有的有什么问题吗?是否有错误/它是否做了与您预期不同的事情?updateUsers()中的返回带下划线,因为它需要一个用户数据的LiveData列表,我不知道如何转换repo获得的文档快照列表。您能为我指出正确的方向吗?嵌套映射不是问题。将输入列表中的每个项目转换为输出列表需要内部列表。将输入LiveData转换为输出LiveData需要外部的LiveData。
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())
            }
    }
}