首页 > 解决方案 > 如何从 Firebase 查询数据以先获取最大值,最后获取最小值?

问题描述

我尝试获取按时间戳排序的 Recyclerview 的值。我的 Firebase 数据库结构如下所示:

 "connections" : {
    "matches" : {
      "ZYpiuLBRJkcM1cK6tDctKYva7UB3" : {
        "ChatId" : "-LG6GS394d_1NotmhnrD",
        "lastMsg" : "i wasdsffas asydfhjdadsfoing just fu?an before i met you ok dir?",
        "lastMsgBy" : "6dB5rWfSIwez3gO0N0ClBwFJKu53",
        "state" : "active",
        "ts" : 4
      },
      "vhsIe0nBBWQ0D9csBpLwgL4Mf293" : {
        "ChatId" : "-LG9_RZNm0DgxlhaMaCv",
        "lastMsg" : "jj?hjkjäooasASDfsdafasdf? a!?",
        "lastMsgBy" : "6dB5rWfSIwez3gO0N0ClBwFJKu53",
        "state" : "active",
        "ts" : 5
      }

为了由孩子 ts 订购,我创建了以下内容:

 private void getMyMatchesQuery(final String userId, final String profileImageUrl, final String name){
  final String userid = FirebaseAuth.getInstance().getCurrentUser().getUid();
  final DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users").child(userid).child("connections").child("matches").child(userId);
  Query qi = ref.orderByChild("ts");
  qi.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

                System.out.println("123value"+dataSnapshot.child("lastMsg").getValue().toString() + dataSnapshot.child("ts").getValue().toString());
            }


        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

 }

不幸的是,我总是收到数据库的第一个值,似乎该方法不关心 ts 值。也许有人知道如何解决它?

标签: javaandroid

解决方案


推荐阅读