У меня два основных класса: Карты и Коллекции. В коллекции есть список строк, которые представляют собой идентификаторы карт внутри нее. Поэтому мне нужно получить всю информацию о картах внутри коллекции, а затем выполнить проверку по почте (для целей приложения).
Я создаю список карт внутри моего фрагмента и получаю вся информация из Firestore. Проблема в том, что я не получаю все карты от db. Я пробовал использовать MVVM и метод интерфейса (отсюда Подождите, пока данные Firestore будут извлечены для запуска действия ), но обычно я получаю 4, 6 карточек из коллекции с 10 карточками.
Как можно дождаться получения всех элементов из списка?
Мой код с реализацией интерфейса:
private void getGeneratorInfo()
DocumentReference collectionDoc = Common.collectionsCol.document(collectionId);
collectionDoc.get().addOnSuccessListener(documentSnapshot12 -> {
Collections collections = documentSnapshot12.toObject(Collections.class);
getCardList(collections.getCardsIdList(), returnCardList -> {
checkDifficulty(returnCardList);
});
}).addOnFailureListener(e -> Toast.makeText(getContext(), "Error: " + e.getMessage(), Toast.LENGTH_SHORT).show());
}
private void getCardList(List<String> cardsIdList, IGetCardList iGetCardList) {
List<Cards> newCardList = new ArrayList<>();
for (int i = 0; i < cardsIdList.size(); i++) {
DocumentReference cardDoc = Common.cardsCol.document(cardsIdList.get(i));
if (i == cardsIdList.size() - 1) {
cardDoc.get().addOnSuccessListener(documentSnapshot -> {
newCardList.add(documentSnapshot.toObject(Cards.class));
iGetCardList.returnCardList(newCardList);
}).addOnFailureListener(e -> Toast.makeText(getContext(), "Error: " + e.getMessage(), Toast.LENGTH_SHORT).show());
} else {
cardDoc.get().addOnSuccessListener(documentSnapshot -> newCardList.add(documentSnapshot.toObject(Cards.class)))
.addOnFailureListener(e -> Toast.makeText(getContext(), "Error: " + e.getMessage(), Toast.LENGTH_SHORT).show());
}
}
}
Мой интерфейс:
public interface IGetCardList {
void returnCardList(List<Cards> returnCardList);
}
(Это в строке checkDifficulty(returnCardList)
, которая при отладке показывает, что returnCardList
имеет 4 ~ 6 элементов)