从Firebase检索数据并将其打印出来

时间:2017-12-03 22:32:54

标签: java android firebase firebase-realtime-database

我的数据库中只有一个,只有一个条目。我在androidstudio中使用此代码将其推送到那里:

FirebaseDatabase.getInstance().getReference().push().setValue(singleMessage);

每个" singleMessage"由三个领域组成:

public class SingleMessage {
    private String messageBody;
    private String messageAuthor;
    private String messageTime;
    ...
}

现在,我想阅读该条目,并打印所有三个字段。虽然听起来很容易,但我无法理解。请帮我。我读过类似的问题/答案。没有帮助

2 个答案:

答案 0 :(得分:1)

FirebaseDatabase.getInstance().getReference().addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            // Get object and use the values to update the UI
            SingleMessage singleMessage = dataSnapshot.getValue(SingleMessage.class);
            // Do something with the data
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    };);

答案 1 :(得分:1)

更改数据库结构并使用:

DatabaseReference db= FirebaseDatabase.getInstance().getReference().child("singleMessage").push();

为什么?能够在随机push键内循环。

然后你可以这样做:

db.addValueEventListener(new ValueEventListener(){
@Override
    public void onDataChange(DataSnapshot dataSnapshot) {
      for(DataSnapshot data: dataSnapshot.getChildren()){
          String messagebody=data.child("messagebody").getValue().toString();
          String messageauthor=data.child("messageauthor").getValue().toString();
          String messagetime=data.child("messagetime").getValue().toString();
        }
      }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
};);

首先,您要添加对侦听器的引用,然后使用for循环,data将在push的随机singleMessage键内迭代