【发布时间】:2019-02-14 11:29:51
【问题描述】:
我的代码
private void addOnlineData(final String item) {
mChildEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot != null) {
final String message = dataSnapshot.child("Message").getValue().toString();
final String time = dataSnapshot.child("Time").getValue().toString();
final String from = dataSnapshot.child("From").getValue().toString();
final String seen = dataSnapshot.child("Seen").getValue().toString();
LastSeen lastSeeen = new LastSeen();
long lastTime = Long.parseLong(time);
final String lastSeenTime = lastSeeen.lastSeen(lastTime, getActivity());
mDatabaseReference.child("UserData").child(item).child("Name").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name = dataSnapshot.getValue().toString();
//CODE GIVEN BELOW WAS HERE
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
我尝试过的事情
1
Log.d("HHHHH2222", String.valueOf(mChats.size()));
mChats.remove(new HomeScreenChatsHelper(name, message, lastSeenTime, from, seen));
Log.d("HHHHH2222", String.valueOf(mChats.size()));
mChats.add(new HomeScreenChatsHelper(name, message, lastSeenTime, from, seen));
mAdapter.notifyDataSetChanged();
2
Log.d("HHHHH2222", String.valueOf(mChats.size()));
mChats.clear();
mChats.add(new HomeScreenChatsHelper(name, message, lastSeenTime, from, seen));
Log.d("HHHHH2222", String.valueOf(mChats.size()));
mAdapter.notifyDataSetChanged();
我的活动只是从 firebase 获取用户数据,目前它有 2 个孩子
如果我更改用户的数据,则应删除 arraylist 中的数据并再次将其添加到更改的数据中
假设用户 A 的值为 X
用户B的值为Y
它在活动中显示了这种方式,如果我将用户 A 的值从 X 更改为 P
我希望活动显示新数据,即 P
但是在我尝试过的方法中。
第一个我得到 3 个值,即 A = X、B = Y 和 A = P
如您所见,添加了新数据,但未删除现有数据
在第二种方法中,活动只是保持刷新,只有 ne 数据,即 A = P
添加新数据时,我想删除旧数据并显示新数据而不重复
我试过的方法,代码在onDataChange里面
助手类
public class HomeScreenChatsHelper {
private String Name;
private String LastMessage;
private String LastMessageTime;
private String From;
private String Seen;
public HomeScreenChatsHelper(){
}
public HomeScreenChatsHelper(String name, String lastMessage, String lastMessageTime, String from, String seen) {
this.Name = name;
this.LastMessage = lastMessage;
this.LastMessageTime = lastMessageTime;
this.From = from;
this.Seen = seen;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getMessage() {
return LastMessage;
}
public void setMessage(String message) {
LastMessage = message;
}
public String getTime() {
return LastMessageTime;
}
public void setTime(String time) {
LastMessageTime = time;
}
public String getFrom() {
return From;
}
public void setFrom(String from) {
From = from;
}
public String getSeen() {
return Seen;
}
public void setSeen(String seen) {
Seen = seen;
}
}
【问题讨论】:
-
您的
HomeScreenChatsHelper类是否实现了.equals和.hashCode方法? List 的.contains方法和.remove方法(以及其他方法)需要这些才能知道要删除哪个对象。 -
不,它没有实现任何这些......@KevinCruijssen
标签: java android database firebase arraylist