Ваш адаптер и просмотр списка должны быть инициализированы и назначены за пределами onDataChange() method
, как вы можете видеть, каждый раз, когда ваши данные из базы данных Firebase меняются, адаптер будет меняться, а список просмотра настраивается повторно, он является избыточным. Попробуйте это.
//set up adapter and listview one time only
adapter = new GroupAdapter();
newmessage_recyclerview.setLayoutManager(new
LinearLayoutManager(getApplicationContext()));
newmessage_recyclerview.addItemDecoration(new
DividerItemDecoration(getApplicationContext(),DividerItemDecoration.VERTICAL));
newmessage_recyclerview.setAdapter(adapter);
adapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(@NonNull Item item, @NonNull View view) {
Log.d("main", String.valueOf(item.getId()));
}
});
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("/users");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot ds:dataSnapshot.getChildren()) {
Userinfo user = ds.getValue(Userinfo.class);
if(user !=null)
adapter.add(new ContactItem(user));
adapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});