Редактировать: добавлены пояснения
Используя ссылку в uidRef
, вы извлекаете все данные в этом узле пути Firebase.
Чтобы получить последние данные, добавленные к этому узлу в базе данных, вы должны добавить метод .limitToLast (1).
Проверка Запрос Firebase - limitToLast ()
Кроме того, поскольку вы извлекаете только один элемент данных, вам не нужно выполнять итерацию, поэтому удаление цикла forEach.
mFirebaseDatabase = FirebaseDatabase.getInstance();
mDbReference = FirebaseDatabase.getInstance().getReference();
final DatabaseReference uidRef = mDbReference.child("users").child(currentUser).
child(selectedUser).child(ChatMessageModel.MSG_TYPE_RECEIVED);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
ChatMessageModel chatMessageModel = ds.getValue(ChatMessageModel.class);
messageList.add(chatMessageModel);
chatAppMsgAdapter.notifyDataSetChanged();
mRecyclerview.setAdapter(chatAppMsgAdapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, "onCancelled: ");
}
};
// Add the .limitToLast(1) query function or replace with the
// limitToFirst(1) if .limitToLast(1) didn't work
uidRef.limitToLast(1).addValueEventListener(valueEventListener);