From the application, I fill in the data on the Firebase server, and immediately display them in RecyclerView , but when you first start writing to the server in RecyclerView lot more points than there should be, there are none on the server, they are clones of each other. Here is the code:

 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) { } }); 

    1 answer 1

    Solved the problem by removing the data acquisition function:

      reference.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { if(!dataSnapshot.child(userId).exists()){ 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); } } } @Override public void onCancelled(DatabaseError databaseError) { } }); 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) { } });