Список пуст, хотя я успешно добавил элементы в цикл for - PullRequest
0 голосов
/ 25 июня 2019

Мой список пуст, хотя я добавил в него элементы в цикле for моего закрытия.Кажется, что это не работает из-за закрытия, но я понятия не имею, как это исправить.Вход в цикл for показывает, что данные добавляются.

    val crewList= mutableListOf<Crew>()


    myRef.addValueEventListener(object : ValueEventListener {
        override fun onDataChange(dataSnapshot: DataSnapshot) {
            for(child in dataSnapshot.children){
                val childCrew = child.getValue(Crew::class.java)
                childCrew?.let { crewList.add(it) }
                Log.i("crewList", crewList.toString())
                //crewList is not empty
            }
        }

        override fun onCancelled(error: DatabaseError) {
            Log.d("Error", "Failed to read value.", error.toException())
        }
    })

    //crewList is empty
    Log.i("crewlist", crewList.toString())
    return crewList.toList()

1 Ответ

0 голосов
/ 25 июня 2019

Поскольку addValueEventListener является асинхронным, но ваш возврат синхронизирован.

Ваш код читает:

  1. Создать список
  2. Добавить прослушиватель событий в myRef
  3. Записать и вернуть список, созданный на шаге 1 (пусто)
  4. Прослушиватель событий запускается вручную или автоматически после возврата и Log.i кода.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...