获取孩子的价值观

时间:2018-07-24 11:57:43

标签: android firebase firebase-realtime-database

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

这是我的Firebase数据库。 还有一个名为Chat的类,它具有receiverIDsenderIDtext。 我可以通过

获取消息的所有数据
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的数据,而不是全部消息。在这种情况下,如何获得孩子的孩子价值观之一? 有什么办法不使用监听器吗?

2 个答案:

答案 0 :(得分:0)

如果不使用侦听器,则无法从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

答案 1 :(得分:0)

我认为这样会起作用

if isinstance(item, str):
    WORDS.append(item)
if isinstance(item, int):
    NUMBERS.append(item)