【问题标题】:Read value for random generated child in firebase android在firebase android中读取随机生成的孩子的值
【发布时间】:2020-08-28 18:48:27
【问题描述】:

我正在尝试从我的 firebase 数据库中读取所有值。我的子值是使用随机生成的

.push.getkey() 

我的数据库结构如下: database structure

示例:子 -MFo2XLRF34Pez_xeVAT 包含一个 Jobs 对象。

如何获取随机生成的子节点的所有值?由于我无法将值传递给datasource.child(),因为我不知道孩子的名字。 我只想将所有 Jobs 对象保存到 ArrayList 中,但我无法访问它们。

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    使用 getter 和 setter 为您在该节点上的信息创建一个 Job 类,然后获取您执行此操作的数据:

         DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("Jobs");
        databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                for(DataSnapshot dataSnapshot:snapshot.getChildren())
                {
                    Jobs jobs = dataSnapshot.getValue(Jobs.class);
                    jobsList.add(jobs);
                }
            }
    
            @Override
            public void onCancelled(@NonNull DatabaseError error) {
    
            }
        });
    

    【讨论】:

    • 我的项目中已经有了 Jobs 类。它不能像这样工作,因为子节点的值不是 Jobs 类的参数 - 例如:我应该为 -MFo2XLRF34Pez_xeVAT 参数做一个 setter 和 getter。我也已经用上面的代码试过了。
    • com. W/ClassMapper: No setter/field for -MFoYE90U6_38vTMS5wb found on class com.Jobs 你得到一个类似上面的错误。
    【解决方案2】:

    问题出在我的databasereference 中。我没有分配databasereference = FirebaseDatabase.getInstance().getReference("Jobs"),而是使用指向根节点的FirebaseDatabase.getInstance().getReference()。在那之后dataSnapshot.getValue() 就像一个魅力。

    【讨论】:

    • 您好,您在 Jobs 类中提到了 setter 和 getter,而不是在数据库参考中。
    • 好吧,当我添加示例并设置参考时,我想我已经很清楚了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2022-01-03
    • 2016-01-24
    相关资源
    最近更新 更多