Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从多个firebase数据库读取数据?_Java_Android_Firebase_Firebase Realtime Database_Sharding - Fatal编程技术网

Java 如何从多个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

我正在开发Android应用程序,它允许用户从多个Firebase数据库读取数据

由于某些原因,数据没有按日期排序,而是以随机顺序出现。如何按日期对评论进行排序,并在列表底部显示最新的评论

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);
能够按日期对数据进行排序

更多信息请点击此处:

请上传数据库的示例屏幕截图