我有这个数据库:
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();
并查询:
Query = refdb.child("users");
我需要获取所有对 (name:value) 并为用户获取书籍对 (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 中打印空字符串。 我如何获取这些数据并将它们写入 TextView ?
最佳答案
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。
关于android - Firebase/android 如何获取子键和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47097787/