从Firebase Android Studio提取时ListView中的数据重复

时间:2019-05-14 11:28:55

标签: android firebase firebase-realtime-database

当我从fireview的listview数据中获取数据时,请重复自身如何停止重复,请有人帮助我...

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 个答案:

答案 0 :(得分:1)

清除数组列表,然后再从Firebase添加新列表或再次初始化列表,即

arraylist = new ArrayList();

答案 1 :(得分:1)

您已在类中创建了arrayList,而不是onDataChange方法。

因此,数据列表与重复数据一起增长。 您可以关注

1)在arrayList中声明onDataChange

2)在foreach之前致电arrayList.clear()。在这种情况下,您应该

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

致电

chatlistView.notifyDatasetChanged();

并事先对其进行初始化

答案 2 :(得分:0)

在chatmessages类中重写hashCode()和equals()方法,因此每个chatmessages都是唯一的。