首页 > 解决方案 > 从firebase方法检索数据

问题描述

如何从 firebase 为 2 个不同的构造函数检索数据?这是我的鸡蛋课。我只想为一个接收下蛋,为另一个接收孵化和状态。

private String laying, hatching,status;

public Eggs() {
}
public  Eggs(String laying)
{
    this.laying=laying;
}
public Eggs(String hatching, String status) {
    this.hatching = hatching;
    this.status = status;
}

我使用这种方法从 firebase 检索数据

         public void onDataChange(@NonNull DataSnapshot dataSnapshot) {      
                for (DataSnapshot breedingSnap : dataSnapshot.getChildren()) {
                    Eggs data = breedingSnap.getValue(Eggs.class);
                    eg.add(data);
                }            
            });

我怎样才能实现这样的东西-

Eggs laying=new Eggs(String laying);
Eggs st=new Eggs(String hatching,String status);

然后将它们添加到arraylist?

标签: javaandroidfirebasefirebase-realtime-database

解决方案


使用传递给 onDataChange的DataSnapshot使用child()访问相关的子快照,使用getValue()将它们读出,然后将它们传递给您的构造函数。

getValue() 的文档说:

getValue() 将此快照中包含的数据作为本机类型返回。返回的可能类型有:

  • 布尔值
  • 细绳
  • 双倍的
  • 地图
  • 列表

这个列表是递归的;上述列表中 Object 的可能类型由同一个列表给出。这些类型对应于 JSON 中可用的类型。

例如,要从快照中读取一个名为“laying”的字符串子值:

DataSnapshot layingSnapshot = breedingSnap.child("laying");
String laying = (String) layingSnapshot.getValue();

因此,您必须知道要阅读的孩子的姓名,还要检查和转换他们的预期类型。为避免运行时问题,您还应该在强制转换之前检查子值的类型。


推荐阅读