Java 如何从多个firebase数据库读取数据?
我正在开发Android应用程序,它允许用户从多个Firebase数据库读取数据 由于某些原因,数据没有按日期排序,而是以随机顺序出现。如何按日期对评论进行排序,并在列表底部显示最新的评论Java 如何从多个firebase数据库读取数据?,java,android,firebase,firebase-realtime-database,sharding,Java,Android,Firebase,Firebase Realtime Database,Sharding,我正在开发Android应用程序,它允许用户从多个Firebase数据库读取数据 由于某些原因,数据没有按日期排序,而是以随机顺序出现。如何按日期对评论进行排序,并在列表底部显示最新的评论 ArrayList<Comment> comments = new ArrayList<Comment>(); ChildEventListener childEventListener = new ChildEventListener() { @Override public vo
ArrayList<Comment> comments = new ArrayList<Comment>();
ChildEventListener childEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
Comment comment = dataSnapshot.getValue(Comment.class);
comments.add(comment):
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) {
Comment newComment = dataSnapshot.getValue(Comment.class);
String commentKey = dataSnapshot.getKey();
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
String commentKey = dataSnapshot.getKey();
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) {
Comment movedComment = dataSnapshot.getValue(Comment.class);
String commentKey = dataSnapshot.getKey();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
List<String> dbUris = getFirebaseUriList();
for(String dburi: dbUris){
Query query = FirebaseDatabase.getInstance(dburi).getReference().child("comments").limitToLast(15);
query.addChildEventListener(listener);
}
ArrayList comments=new ArrayList();
ChildEventListener ChildEventListener=新的ChildEventListener(){
@凌驾
公共void onChildAdded(DataSnapshot DataSnapshot,字符串previousChildName){
Comment Comment=dataSnapshot.getValue(Comment.class);
评论。添加(评论):
}
@凌驾
公共void onChildChanged(DataSnapshot DataSnapshot,字符串previousChildName){
Comment newComment=dataSnapshot.getValue(Comment.class);
String commentKey=dataSnapshot.getKey();
}
@凌驾
ChildRemoved上的公共void(DataSnapshot DataSnapshot){
String commentKey=dataSnapshot.getKey();
}
@凌驾
onChildMoved公共void(DataSnapshot DataSnapshot,字符串previousChildName){
Comment movedComment=dataSnapshot.getValue(Comment.class);
String commentKey=dataSnapshot.getKey();
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
};
List dbUris=getFirebaseUriList();
for(字符串dburi:dbUris){
Query Query=FirebaseDatabase.getInstance(dburi.getReference().child(“comments”).limitToLast(15);
query.addChildEventListener(listener);
}
在多个查询中使用同一个侦听器是一个好主意吗?谢谢。更改此选项:
query.addChildEventListener(listener);
为此:
query.orderByChild("date").addChildEventListener(listener);
能够按日期对数据进行排序
更多信息请点击此处:
请上传数据库的示例屏幕截图