有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

子[Firebase数据库Android]中的java orderByValue

这是我的firebase数据库

enter image description here

我需要按子项“total”的值排列此列表 我尝试使用这个代码

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) 个答案

  1. # 1 楼答案

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

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

    如果删除orderByValue()(因此只有orderByChild("status")),Firebase将基于每个子级的status属性的值

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