【问题标题】:How to fetch data from firebase real time database in android如何从android中的firebase实时数据库中获取数据
【发布时间】:2018-09-26 12:09:25
【问题描述】:

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

【问题讨论】:

  • 附图在哪里?
  • 我加了但是这里看不到。
  • 在编辑中再次添加。
  • 你需要从你的图片中获取什么?
  • 嘿,我已经编辑了问题。请提出答案。

标签: java android firebase firebase-realtime-database


【解决方案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");

然后您可以在 ids 中循环并检索数据。

【讨论】:

  • 我们可以使用地图或任何其他东西来获取孩子而不是使用 - getReference("users").child("User1").child("MSG_TYPE_SENT");这??因为如果有很多孩子,这种方式可能太长了。
  • 你可以将它们添加到一个孩子中,child("User1/MSG_TYPE_SENT") 无论如何你不应该嵌套很多数据库,它应该是平面数据库
【解决方案2】:

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

        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) {

                    }
                });

如果收到的消息在任何时候发生变化(假设您想像 whatsapp 那样实时实现消息的删除选项).addValueEventListener 将实时更新您的 UI,如果您已编码显示消息已被删除

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 2021-03-04
    相关资源
    最近更新 更多