Данные дублируются в просмотре списка при получении из Firebase Android Studio - PullRequest
0 голосов
/ 14 мая 2019

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

databaseReference.child("Conversation")
    .child(current_token)
    .child(user_token)
    .addValueEventListener(new ValueEventListener() {
      @Override
      public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

        String msgs = null;
        for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
          ChatMessage chatmessages = snapshot.getValue(ChatMessage.class);
          msgs = chatmessages.getMessageText();
          Log.e("chk", "" + msgs);
          arrayList.add(new chatmessages(msgs)); //here is duplication
        }

        chat = new Chat(getApplicationContext(), arrayList);
        chatlistView.setAdapter(chat);
      }

      @Override
      public void onCancelled(@NonNull DatabaseError databaseError) {

      }
    });
}

Ответы [ 3 ]

1 голос
/ 14 мая 2019

очистить массив перед тем, как добавить новый список из базы Firebase или снова инициализировать список, т.е.

arraylist = new ArrayList();
1 голос
/ 14 мая 2019

Вы создали arrayList в классе вместо onDataChange метода.

Поэтому список данных увеличивается с дублированием данных.Вы можете сделать следующее

1) Объявить arrayList в onDataChange

2), позвонив arrayList.clear() перед foreach.В этом случае вы должны вместо этого

chat = new Chat(getApplicationContext(), arrayList);
chatlistView.setAdapter(chat);

позвонить

chatlistView.notifyDatasetChanged();

и инициализировать его ранее

0 голосов
/ 14 мая 2019

Переопределите методы hashCode () и equals () в классе chatmessages, чтобы каждое chatmessages было уникальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...