为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Firebase 数据库获取每个孩子的最后一个孩子

使用 Firebase 数据库获取每个孩子的最后一个孩子

料青山看我应如是 2021-07-16 22:19:58
我想获取下图的sender_uid值:这是我下面的代码。我没有得到任何价值,我不知道为什么。有人可以解释代码有什么问题吗?谢谢!编辑:我只想要每个父级的最后一个 sender_uid - 例如:对于节点,391rfBEXjVUplEW8aoahMtluSmz1_6dTv7oHnWOh55XzRuf9ouZFZkGt2我只需要来自LJxvDjdetWz1-DAFVCy 的 sender_uid,而不是来自LJxvA65WA7MX8aaX5nF。mDatabase.addValueEventListener(new ValueEventListener() {        @Override        public void onDataChange(DataSnapshot dataSnapshot) {            List<UsersListGetter> usersList = new ArrayList<>();            recyclerView.setAdapter(new UsersListAdapter(usersList, getApplicationContext()));            recyclerView.setAdapter(new UsersListAdapter(null, getApplicationContext()));            for (DataSnapshot ch : dataSnapshot.getChildren()) {                String senderReceiver[] = ch.getKey().split("_");                if (senderReceiver[0].equals(mAuth.getUid()) || senderReceiver[1].equals(mAuth.getUid())) {                    Query lastQuery = mDatabase.child(ch.getKey()).orderByKey().limitToLast(1);                    lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {                        @Override                        public void onDataChange(DataSnapshot dataSnapshot) {                            String message = dataSnapshot.child("message_body").getValue().toString();                            Log.d("MSG", message);                        }                        @Override                        public void onCancelled(DatabaseError databaseError) {                            //Handle possible errors.                        }                    });                }            }        }    @Override    public void onCancelled(@NonNull DatabaseError databaseError) {    }});
查看完整描述

2 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

您可以通过这种方式从每个节点获取 sender_uid


首先创建一个pojo类来获取你想要的数据


public class UserPojo {


    private String sender_uid;


    public UserPojo() {


    }


    public String getSender_uid() {

        return sender_uid;

    }


    public void setSender_uid(String sender_uid) {

        this.sender_uid = sender_uid;

    }

}

然后为每个聊天参考检索它


mDatabase.addValueEventListener(new ValueEventListener() {

            @Override

            public void onDataChange(DataSnapshot dataSnapshot) {

                List<UsersListGetter> usersList = new ArrayList<>();

                recyclerView.setAdapter(new UsersListAdapter(usersList, getApplicationContext()));


                recyclerView.setAdapter(new UsersListAdapter(null, getApplicationContext()));


                for (DataSnapshot ch : dataSnapshot.getChildren()) {

                  UserPojo up = ch.getValue(UserPojo.class);

                  String senderUid = up.getSender_uid(); //here you got your sender_uid


                        Query lastQuery = mDatabase.child(ch.getKey()).orderByKey().limitToLast(1);

                        lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {

                            @Override

                            public void onDataChange(DataSnapshot dataSnapshot) {

                                String message = dataSnapshot.child("message_body").getValue().toString();

                                Log.d("MSG", message);

                            }


                            @Override

                            public void onCancelled(DatabaseError databaseError) {

                                //Handle possible errors.

                            }

                        });


                }

            }


        @Override

        public void onCancelled(@NonNull DatabaseError databaseError) {


        }

    });


查看完整回答
反对 回复 2021-07-23
  • 2 回答
  • 0 关注
  • 191 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信