如何从我的Android应用程序的firebase中的键中获取值?

时间:2017-11-15 08:10:11

标签: android firebase

我是firebase的新手,我无法获取键值的内容。我尝试了一些东西,但都没有成功。

有人可以帮我提取数据吗?

我的firebase数据库 - Firebase数据库结构:

enter image description here

我的代码 -

aFile = open("file.txt")
//x = aFile.readLine()  <- reading before checking end of file condition
while !aFile.endOfFile()
    //x = aFile.readLine() <- only read if you have not already read 
                                          from the file before the loop
    print(x)
    //x = aFile.readLine()  <- if reading before checking end of file, 
                            you will read again after printing the previous x value
end while
aFile.close()

2 个答案:

答案 0 :(得分:1)

DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("admin").child("classPost");
ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
    for(DataSnapshot data : dataSnapshot.getChildren()){
     String retrieveposts=data.child("posts").getValue().toString();
    }
    }
 @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

我假设您想要在classPost中使用帖子的值。

解释代码:

 DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("admin").child("classPost");

以上是对数据库中位置的引用。所以孩子(“admin”)。孩子(“classPost”)。您指的是节点admin下的节点classPost的位置,因此使用child(node_name)

现在这个:

ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
    for(DataSnapshot data : dataSnapshot.getChildren()){
     String retrieveposts=data.child("posts").getValue().toString();
    }
    }

是一个能够从数据库中检索值的侦听器。 dataSnapshot这里是classPost。因此,当您撰写dataSnapshot.getChildren()时,这意味着您将获得classPost的孩子,然后data会在孩子内部进行迭代,从而为您提供posts

的值

答案 1 :(得分:0)

要实现此目的,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference classPostRef = rootRef.child("admin").child("classPost");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String post = ds.child("post").getValue(String.class);
            Log.d("TAG", post);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
classPostRef.addListenerForSingleValueEvent(eventListener);