android - 获取孩子的价值观
问题描述
根
-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
,而不是所有消息。在这种情况下,我怎样才能获得孩子的孩子价值观之一?有没有办法不使用监听器?
解决方案
如果不使用侦听器,就无法从 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
.