Я хочу нажать кнопку, которая будет извлекать некоторые данные из Firebase, затем я хочу перейти к следующему действию, передав массив, содержащий данные Firebase. Я все еще не могу обернуть голову вокруг асинхронного кода, и я надеялся, что кто-нибудь сможет помочь мне с самым простым способом сделать это.
Я экспериментировал с блокировкой выполнения, функциями приостановки, ожиданием и асинхронностью, но я не могу понять, что это правильно. Вот мой слушатель по щелчку:
btn_games_quiz.setOnClickListener {
listenForQuestions()
val intent = Intent(this, QuizActivity::class.java)
intent.putExtra("questionArray", questionArray)
startActivity(intent)
}
А вот послушайте вопросы:
private fun listenForQuestions(){
val current = LocalDateTime.now()
val formatter = DateTimeFormatter.ofPattern("MM")
val formatted = current.format(formatter)
val currentMonth = QuizActivity.months[formatted.toInt()]
val ref = FirebaseDatabase.getInstance().getReference("/quizzes/$currentMonth")
ref.addChildEventListener(object: ChildEventListener {
override fun onChildAdded(p0: DataSnapshot, p1: String?) {
val questionItem = p0.getValue(Question::class.java)
if (questionItem != null) {
questionArray += questionItem
}
}
override fun onCancelled(p0: DatabaseError) {
}
override fun onChildChanged(p0: DataSnapshot, p1: String?) {
}
override fun onChildMoved(p0: DataSnapshot, p1: String?) {
}
override fun onChildRemoved(p0: DataSnapshot) {
}
})
}
Точка в правильном направлении будет принята с благодарностью.