如何从Android中的Firebase实时数据库中获取数据

时间:2018-09-26 12:09:26

标签: android firebase firebase-realtime-database

我必须从Firebase实时数据库中获取所有子级数据吗?我想获取User2收到的消息。怎么做?数据库示例如下-

enter image description here

2 个答案:

答案 0 :(得分:1)

要获取子数据,请尝试以下操作:

 DatabaseReference reference = FirebaseDatabase.getInstance().getReference("users").child("User1").child("MSG_TYPE_SENT");

reference.addListenerForSingleValueEvent(new ValueEventListener() {
 @Override
public void onDataChange(DataSnapshot dataSnapshot) {
  for(DataSnapshot datas: dataSnapshot.getChildren()){
     String msgContent=datas.child("msgContent").getValue().toString();
     String msgType=datas.child("msgType").getValue().toString();
    }
  }
 @Override
public void onCancelled(DatabaseError databaseError) {
    }
 });

这将为您提供msgContentmsgType,要从数据库中检索任何数据,您需要遍历每个节点示例:-

getReference("users").child("User1").child("MSG_TYPE_SENT");

然后,您可以在ID内循环并检索数据。

答案 1 :(得分:0)

在这里您可以获取收到的User2消息

String s = new String(bytes);

如果收到的消息随时发生变化(例如,您想像whatsapp一样实时实现消息的删除选项), DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("users"); mDatabase.child("User2").child("MSG_TYPE_RECEIVED").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for(DataSnapshot spanshot : dataSnapshot.getChildren()){ String content=snapshot.child("msgContent").getValue(String.class); String type=snapshot.child("msgType").getValue(String.class); //then you can log those values Log.d("Values:",""+content+""+type); } } @Override public void onCancelled(DatabaseError databaseError) { } }); 将实时更新您的UI,前提是您已进行编码以表明消息具有已被删除