Не подгружаются данные с firebase в recyclerview

Рейтинг: 0Ответов: 1Опубликовано: 02.02.2023

Я когда запускаю приложение, оно сразу запускает страницу с со списком. Если список сделан в ручную(Через код добавляю данные в массив) то работает быстро, а если через firebase, то данные отображаются после переключение на другой фрайгмент и обратно на фрагмент со списком.

                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        progressBar.setVisibility(ProgressBar.VISIBLE);

                        if (task.isSuccessful()) {
                            autoClasses.clear();
                            for (QueryDocumentSnapshot document : task.getResult()) {

                                initializeData(document.getString("name"), document.getString("price"), document.getString("image"));
                            }
                            progressBar.setVisibility(ProgressBar.INVISIBLE);
                        } else {
                            Log.d(TAG, "Error getting documents: ", task.getException());
                        }
                    }
                });


public void initializeData(String name, String price, String image){
        autoClasses.add(new AutoClass("hello","world", url));
        autoClasses.add(new AutoClass("hello","world", url));
        autoClasses.add(new AutoClass(name, price, image));
    }

Ответы

▲ 0

В общем, спустя ещё пару запросов в гугл, я нашёл ответ. Нужно учесть что firebase является асинхронным. В общем - устанавливать Адаптер Recyclerview нужно ПОСЛЕ получения всех данных

db.collection("Collection")
                .get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        progressBar.setVisibility(ProgressBar.VISIBLE);

                        if (task.isSuccessful()) {
                            autoClasses.clear();
                            for (QueryDocumentSnapshot document : task.getResult()) {

                                initializeData(document.getString("name"), document.getString("price"), document.getString("image"));
//                                autoClasses.add(new AutoClass(document.getString("name"), document.getString("price"), document.getString("image")));
                            }
                            rv.setAdapter(adapter);
                            progressBar.setVisibility(ProgressBar.INVISIBLE);
                        } else {
                            Log.d(TAG, "Error getting documents: ", task.getException());
                        }
                    }
                });

Адаптер - rv.setAdapter(adapter);