android - Firebase/android 如何获取子键和值?

标签 android firebase firebase-realtime-database key

我有这个数据库:

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/

相关文章:

android - Android 4 上的 Google+ 登录错误,statusCode=SIGN_IN_REQUIRED

android - 使用宽度 Android Studio 的布局权重时调整高度

java - RxJava Single.just 在主线程中

ios - 突然无法连接到我的 Firebase 数据库

java - 将号码从 NumberPicker 发送到 Firebase

android - Dialog.getCancelable() 不存在

node.js - 云函数崩溃并显示 `Error: Can' 无法确定 Firebase 数据库 URL。

swift - 使用多个查询过滤 firebase

ios - 在整个应用生命周期中的 Firebase 观察者

ios - Firebase 插入具有 2 个关键属性的数据