【发布时间】:2019-03-13 13:29:56
【问题描述】:
如果我的数据库发生变化,总是会显示旧值和新值。我怎样才能删除旧的并只显示新的。这是我的代码:
private void downloadAccepted(final String plz) {
String userid =
FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users").child(userid).child("acceptedEvents");
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
downloadAcceptedDetails(plz, snapshot.getKey().toString());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void downloadAcceptedDetails(final String plz, final String id){
DatabaseReference refi = FirebaseDatabase.getInstance().getReference().child("Events").child(plz).child(id);
refi.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Long millis = new Date().getTime();
if (dataSnapshot.getChildrenCount() > 0 ) {
if (Long.parseLong(dataSnapshot.child("ts").getValue().toString()) > millis) {
EventObject eo = new EventObject(dataSnapshot.child("ts").getValue().toString(), dataSnapshot.child("name").getValue().toString(), dataSnapshot.child("street").getValue().toString(), dataSnapshot.child("plz").getValue().toString());
accepted.add(eo);
try{
((globalVariable) getActivity().getApplication()).setAdapter2(adapter2);
}catch (Exception e){
}
adapter2.notifyDataSetChanged();
} else {
removeValuesMyIdeas( plz, id);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
并且总是调用我的 downloadAccepted 中的 onData Change。我已经尝试在之前的方法中执行以下操作:
accepted = new ArrayList();
不幸的是,如果我将此行添加到这两种方法之一,则始终不会显示任何内容。
【问题讨论】:
标签: android firebase-realtime-database