从应用程序我将数据填写到服务器Firebase
,并立即将它们显示在 中 RecyclerView
,但是在第一次启动时,当服务器写入的 RecyclerView
点比应有的多得多时,它们不在服务器上,它们是克隆彼此。这是代码:
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.child(userId).exists()){
reference.child(userId).child("KEYS").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
codes.add(dataSnapshot.getValue(Codes.class));
codesAdapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
Codes code = dataSnapshot.getValue(Codes.class);
int index = getItemIndex(code);
codes.set(index, code);
codesAdapter.notifyItemChanged(index);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
Codes code = dataSnapshot.getValue(Codes.class);
int index = getItemIndex(code);
codes.remove(index);
codesAdapter.notifyItemRemoved(index);
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}else{
if(newArr.contains("newArr")) {
reference.child(userId).child("Тут не пусто").setValue("Да да это правда");
for (int k = 1; k < 4; k++) {
String cod = "G-" + (k + (k * 3)) * 5553;
reference.child(userId).child("KEYS").child(cod).child("cod").setValue(cod);
}
SharedPreferences.Editor editor = newArr.edit();
editor.putString("newArr","false");
editor.apply();
}
}
}
@Override public void onCancelled(DatabaseError databaseError) { }
});
我通过删除获取数据的功能解决了这个问题: