使用不同键父级的时间戳对节点进行排序

时间:2018-12-28 22:48:55

标签: java android firebase firebase-realtime-database

这是我的数据库结构:

- Feed
       _ Parent key 1:
                - key 1:
                        _ time_stamp: 3
                - key 2:
                        _ time_stamp: 4
       _ Parent key 2:
                - key 1:
                        _ time_stamp: 2
                - key 2:
                        _ time_stamp: 1

我的问题是当我使用

Query query = mFeed.child(parent).orderByChild("time_stamp")

我得到的是time_stamp仅按该顺序在该父键上排序

3-4-1-2

我要获得的订单是这样:

1-2-3-4

请帮助!!!

1 个答案:

答案 0 :(得分:0)

您需要了解,当您对Firebase数据库进行查询时,可能会有多个结果。因此快照包含一个结果列表。

您可以使用这样的代码来执行所需的操作:

mFeed.orderByChild("time_stamp").limitToLast(4).addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
                String res = childSnapshot.getValue().toString().trim();
                // do what you want by adding them to arraylist or something
            }
        } 
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException(); // do something for errors
    }
});

此外,您不一定总是需要从Firebase获取列表,而是可以在检索后根据需要对其进行排序。