@AndreyRafalsky13

Странное поведение метода для получения данных с коллекции Firebase. Как исправить?

Почему метод для получения данных с коллекции ведет себя неправильно?

public List<Note> loadNotes(){
    database.collection(NoteCollection.COLLECTION_NAME)
            .get()
            .addOnSuccessListener(queryDocumentSnapshots -> {
                notes.addAll(queryDocumentSnapshots.toObjects(Note.class));
                Log.d("loadingNote", String.valueOf(notes.size()));
            })
            .addOnFailureListener(e -> {
                Log.d("loadingNote", e.toString());
            });
    Log.d("loadingNote", String.valueOf(notes.size()));
    return notes;
}


Дело в том, что addOnSuccessListener отрабатывает правильно. То есть в лист добавляется два элемента. Но перед return проверяю лист и оказывается, что в нем вообще нету элементов. Хотя они же добавились в addOnSuccessListener. Почему так происходит и как решить эту проблему?

Вот логи:

2019-02-26 07:42:04.194 12548-12548/com.rafalsky.firebaselesson1 D/loadingNote: 0
2019-02-26 07:42:06.452 12548-12548/com.rafalsky.firebaselesson1 D/loadingNote: 2


Заранее благодарен за помощь.
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Ну даже по логам видно же всё.
Это асинхронная операция, коллбек addOnSuccessListener вызывается уже после того, как произошел выход из твоего метода.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы