FirebaseDatabase.getInstance()。getReference()到子节点,并列出该子节点下的键值对

时间:2018-02-12 20:21:43

标签: java android firebase firebase-realtime-database

我正在尝试访问灌木子项,并在灌木下的每个唯一键下,访问键值对,例如密钥 ShrubbedWord yfyj

Click here to view a screenshot of my firebase tree structure

我试过这个,但我一无所获: -

postsData = FirebaseDatabase.getInstance().getReference().child("Shrubs");

        ChildEventListener childEventListener = new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                    for (DataSnapshot dttSnapshot2 : dataSnapshot.getChildren()) {
                            Log.d("mylog", "" + dttSnapshot2.getKey().toString() + ":" + dttSnapshot2.getValue().toString());
                    }
            }

现在我试试这个:

postsData = FirebaseDatabase.getInstance().getReference();

        ChildEventListener childEventListener = new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                    for (DataSnapshot dttSnapshot2 : dataSnapshot.getChildren()) {
                            Log.d("mylog", "" + dttSnapshot2.getKey().toString() + ":" + dttSnapshot2.getValue().toString());
                    }
            }

我的日志返回从生日到灌木的一大堆数据,我不需要。只是希望Shrubs子项中的数据为键值对。

任何人都知道如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

试试这个:

 DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("unknown").child("Shrubs");
ref.addValueEventListener(new ValueEventListener(){
 @Override
 public void onDataChange(DataSnapshot dataSnapshot) {
  for(DataSnasphot datas: dataSnapshot.getChildren()){
     String name=datas.child("ShrubbedWord").getValue().toString();
    } 
 }

@Override
public void onCancelled(FirebaseError firebaseError) {


    }
   });

你需要从上到下,在你提供的图像中有一个子节点,你在它上面添加了红线,所以我们看不到它。

我在代码中将其命名为child("unknown"),但在您的代码名称中将其命名为在数据库中编写的名称。

之后您编写child("Shrubs"),然后您的dataSnapshot将位于Shrubs子节点的位置。然后,您可以在推送ID内部进行迭代,以便能够检索属性及其内部的值。