如何在android中获取firebase数据库中最近添加的消息
我正在尝试从数据库中获取最近添加的消息。但每当我获取这些消息时,所有消息都显示在recyclerview中。我只想显示最近添加的消息。 //这是我的密码-如何在android中获取firebase数据库中最近添加的消息,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在尝试从数据库中获取最近添加的消息。但每当我获取这些消息时,所有消息都显示在recyclerview中。我只想显示最近添加的消息。 //这是我的密码- mFirebaseDatabase = FirebaseDatabase.getInstance(); mDbReference = FirebaseDatabase.getInstance().getReference(); final DatabaseReference uidRef = mDbRefere
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) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
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: ");
}
};
uidRef.addValueEventListener(valueEventListener);
//here output like this -
编辑:添加了解释
通过使用uidRef
中的引用,您正在检索firebase路径的该节点中的所有数据
要检索添加到数据库中该节点的最后一个数据,应添加.limitToLast(1)方法
检查
此外,由于您只检索一个数据,因此不需要迭代,因此删除了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);
通过最近添加的
消息
,您的意思是什么?请同时添加您的数据库结构。