Задать вопрос
@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


Заранее благодарен за помощь.
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Android-разработчик
    12 месяцев
    Далее
  • Нетология
    Android-разработчик с нуля
    14 месяцев
    Далее
  • LearnQA
    Автоматизатор мобильных приложений
    9 недель
    Далее
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Ну даже по логам видно же всё.
Это асинхронная операция, коллбек addOnSuccessListener вызывается уже после того, как произошел выход из твоего метода.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы