Цикл Android Firestore возвращает пустой список

я создал два метода для получения данных из firestore. Первый метод перебирает список атрибутов, выбранных пользователем. Другой метод — запрос данных в зависимости от выбора пользователя. После повторения каждого элемента необходимо запустить новый метод. Проблема в том, что мой список всегда пуст, хотя данные есть. Вот оба метода:

 private void getStores(ArrayList<String> checkedItems) {
    newSeller = new ArrayList<>();
    sellers = new ArrayList<>();
    a = 0;

    for (int i =0; i<checkedItems.size(); i++){
        String checkedItem = checkedItems.get(i);
        int finalA = i;
        getStore(checkedItem);

    }
}

private void getStore(String checkedItem) {
    db.collection("Seller")
            .whereEqualTo("typ", checkedItem)
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            SellerObject so = document.toObject(SellerObject.class);
                            so.setId(document.getId());
                            sellers.add(so);
                            Log.i(TAG, "onComplete: toa"+sellers.size());
                        }



                    } else {
                        Log.d(TAG, "Error getting documents: ", task.getException());
                    }
                }
            });
}

Ваш код выглядит нормально, дважды проверьте структуру базы данных Firestore, чтобы убедиться, что вы правильно запрашиваете (также добавьте структуру в свой пост, если вам нужна помощь)

Logan Rodie 22.01.2019 21:41

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

Markus Gerlach 22.01.2019 22:02
0
2
230
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы объявляете массив «sellers» внутри первой функции, но затем пытаетесь добавить к нему вторую функцию. Уберите продавцов из функции, чтобы к ней можно было добраться.

но я должен очистить массив, прежде чем я снова проанализирую данные. Я также пробовал это с продавцами.clear, но это тоже не работает. Если я удалю этот оператор, у меня будут избыточные значения

Markus Gerlach 22.01.2019 21:40

у меня сейчас другая проблема. Не могли бы вы помочь мне?

Markus Gerlach 22.01.2019 22:07

Другие вопросы по теме