首页 > 解决方案 > 获取孩子的价值观

问题描述

-messages
   --LIB38128eG7v
      -receiverID: "yoon"
      -senderID: "kim"
      -text: "good day"
   --LIB36334eG9e
      -receiverID: "yoon"
      -senderID: "kim"
      -text: "good night"

这是我的 Firebase 数据库。并且有一个名为 的类Chat,它有receiverID, senderID, text。我可以通过以下方式获取消息的所有数据

ref.child("messages").addChildEventListener(new ChildEventListener(){
   public void onChildAdded(Datasnapshot dataSnapshot, String s){
   Chat chat = dataSnapshot.getValue(Chat.class);
   mChat.add(chat); //mChat is an array of Chat
 ....
}

但我想获取 的数据LIB38128eG7v,而不是所有消息。在这种情况下,我怎样才能获得孩子的孩子价值观之一?有没有办法不使用监听器?

标签: androidfirebasefirebase-realtime-database

解决方案


如果不使用侦听器,就无法从 Firebase 数据库中获取数据。Firebase 中的一切都是关于听众的。要获取 下的数据-LIB38128eG7v,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference messageIdRef = rootRef.child("messages").child("-LIB38128eG7v");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        Chat chat = dataSnapshot.getValue(Chat.class);
        Log.d("TAG", chat.getText());
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
messageIdRef.addListenerForSingleValueEvent(valueEventListener);

您的 logcat 中的输出将是:good day.


推荐阅读