我正在尝试访问灌木子项,并在灌木下的每个唯一键下,访问键值对,例如密钥: ShrubbedWord 值: yfyj
我试过这个,但我一无所获: -
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子项中的数据为键值对。
任何人都知道如何实现这一目标?
答案 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内部进行迭代,以便能够检索属性及其内部的值。