如何在Android中返回值之前确保侦听器完成

时间:2018-06-26 17:15:39

标签: android firebase kotlin google-cloud-firestore

我想编写一个函数,该函数返回一个包含文档ID的列表。 为了从数据库(Cloud Firestore)中读取数据,我使用OnCompleteListener。 到目前为止,这是我的代码:

private fun getInvolvedChannels(): MutableList<String> {
    var involvedList = mutableListOf<String>()
    val currentUserId = FirebaseAuth.getInstance().currentUser?.uid
    firestoreInstance.collection("users").document(currentUserId!!).collection("engagedChatChannels").get()
            .addOnCompleteListener ( object : OnCompleteListener<QuerySnapshot> {
                override fun onComplete(task: Task<QuerySnapshot>) {
                    task.result.documents.forEach {
                        val currentChannelId = it.id.toString()
                        involvedList.add(currentChannelId)
                    }
                }
            })
   involvedList = buildChatChannelString(involvedList)
    return involvedList
}

阅读部分已经可以正常工作。问题在于,该列表在侦听器甚至是红色Id之前就已返回。因此,它总是返回一个空列表。我的错误在哪里?如何确保侦听器在返回列表之前完成?

0 个答案:

没有答案