当我从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) {
}
});
}
答案 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都是唯一的。