子项中的orderByValue [Firebase数据库安卓]

时间:2018-01-11 15:35:21

标签: java android firebase firebase-realtime-database

这是我的firebase数据库

enter image description here

我需要按照孩子“总数”的价值订购此列表 我尝试使用此代码

data.child("rating_apps").child("Developing").orderByChild("total").orderByValue().addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                 list.add(dataSnapshot.child("name").getValue(String.class));
                 adapter.notifyDataSetChanged();
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

是否可以通过与父母不相近的值来排序列表?

2 个答案:

答案 0 :(得分:1)

Query myTopPostsQuery = databaseReference.child("user-posts").child(myUserId)
        .orderByChild("starCount");
myTopPostsQuery.addChildEventListener(new ChildEventListener() {
    // TODO: implement the ChildEventListener methods as documented above
    // ...
});

答案 1 :(得分:0)

查询中只能有一个orderBy ....您的orderByValue()会导致Firebase对错误属性的值(密钥为iirc)进行排序。

如果您移除orderByValue()(因此只有orderByChild("status")),Firebase将会显示每个孩子的status属性值。

正如您所指出的,它确实会将这些值排序为字符串,因为您将数值存储为字符串。如果您希望它们按数字排序,请将它们存储为实际数字。