notifyDataSetChange не работает должным образом на пользовательском адаптере - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь добавить какой-то элемент в БД, добавить в случае успеха, чтобы перезагрузить мой просмотр списка во фрагменте.

На самом деле у меня есть что-то подобное.

  db.collection("quizz").document().set(Quizz).addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {
                            Toast.makeText(context, getString(R.string.quizz_done), Toast.LENGTH_SHORT).show();
                            Quizz nQuizz = new Quizz(""+items.size()+1,""+mScore,uid,now);
                            items.add(nQuizz);
                            adapterquizz.notifyDataSetChanged();

                        }
                    }).addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Toast.makeText(context,getString(R.string.quizz_not_done), Toast.LENGTH_SHORT).show();
                        }
                    });

1 Ответ

0 голосов
/ 03 марта 2020

Вы обновляете список только при запуске нового экземпляра вашего адаптера. Вам нужно создать функцию обновления внутри вашего адаптера:

public void updateData(List<Quizz> yourNewList) { data.clear(); // remove this if u just want to insert new item instead of clear all data.addAll(yourNewList) notifyDatasetChange() }

Вызовите это из действия, когда вам нужно обновить данные.

Вам не нужно передавать список вашего конструктора адаптера больше.

...