Как убедиться, что слушатель закончил, прежде чем вернуть значение в Android - PullRequest
0 голосов
/ 26 июня 2018

Я хочу написать функцию, которая возвращает список, содержащий идентификаторы документов. Для чтения данных из базы данных (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. Так что он всегда возвращает пустой список. Где моя ошибка? Как я могу убедиться, что слушатель закончил, прежде чем я верну список?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...