我有这个DB:
users: {
0 : {
name: xx
age: 11
books:{
0 : true
3 : true
}
}
1 : {
name: yy
age: 12
books:{
1 : true
4 : true
}
}
}
我已经参考了db als:
database = FirebaseDatabase.getInstance();
refdb = database.getReference();
和查询als:
Query = refdb.child("users");
我需要获得所有对(名称:值)和用户对书籍(id:true)als:
0 : true
3 : true
我正在使用它来获得对(id:true):
refdb.child("users").child("books").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
pck.setText(pack);
for (DataSnapshot dttSnapshot2 : dataSnapshot.getChildren()) {
pack = dttSnapshot2 .getKey().toString()+":"+dttSnapshot2 .getValue().toString();
pck.append(pack);
}
...
其中pck是textView。 我的问题是每次他在textView中打印空字符串。 如何获取这些数据并将其写入文本视图?
答案 0 :(得分:7)
refdb.child("users").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot uniqueKeySnapshot : dataSnapshot.getChildren()){
//Loop 1 to go through all the child nodes of users
for(DataSnapshot booksSnapshot : uniqueKey.child("Books").getChildren()){
//loop 2 to go through all the child nodes of books node
String bookskey = booksSnapshot.getKey();
String booksValue = booksSnapshot.getValue();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
}
到目前为止,我还没有测试过此代码,但我希望你能得到这个想法。无法跳过唯一ID节点,因为firebase不知道您要从中提取数据的唯一ID。因此,要么使用foreach循环遍历所有唯一ID,要么指定您想要数据的唯一ID。