Как дождаться возврата данных из firebase?

У меня есть класс активность. В нем есть список типа User

class MainActivity : AppCompatActivity() {

    var list: User? = null


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
  }
}

И есть класс в который у меня вынесены все операции с Firebase базой данных.
В этом классе есть список User, и есть функция которая заполняет этот список данными из Firebase и возвращает этот список.

class FirebaseOperations {

var list: User? = null


   //Функция получения пользователя по ID

companion object{
fun getUserList(id: String){

        db?.getReference("Users")?.child(id)?.addListenerForSingleValueEvent(object : ValueEventListener{
            override fun onDataChange(snapshot: DataSnapshot) {
                for(users in snapshot){
                   list.add(users.getValue(User::class.java)) 
}
            }

            override fun onCancelled(error: DatabaseError) {
            }

        })
        return list
    }
}
    
}

эту функция я вызываю в своей активности примерно так:

list = FirebaseOperations.getUserList()

Проблема в том что, запрос из Firebase выполняется асинхронно, и оператор return не ждет ответа от firebase и возвращает null

Как я могу дождаться пока firebase добавить все данные в мой список, и чтобы только после этого функция getUserList вернула уже заполненный список?

P.S Я хочу чтобы функция getUserList была именно в отдельном классе таком как FirebaseOperations


Ответы (0 шт):