从Firebase示例中获取,如果我有像这样的恐龙事实数据结构:
{
"lambeosaurus": {
"name": "lamby",
"work": "eat",
"dimensions": {
"height" : 2.1,
"length" : 12.5,
"weight": 5000
}
},
"stegosaurus": {
"name": "stego",
"work": "play",
"dimensions": {
"height" : 4,
"length" : 9,
"weight" : 2500
}
}
}
如何在Android类中为Firebase表示此结构,以便从DataSnapshot.getValue(DinosaurFacts.class)
转换?
名称和工作表示为字符串,但如何表示"维度"在课堂上收集?
另外,如何从DataSnapshot
访问有关身高和数量的数据值?重量?
修改 我可以通过快照获取循环的单个元素,但我试图找到如何在类结构中表示数据。
for(DataSnapshot child : dataSnapshot.getChildren()) {
Log.d("hz-key:", child.getKey().toString());
Log.d("hz-val:", child.getValue().toString());
}
答案 0 :(得分:14)
表示此结构的JavaBean类是:
public static class DinosaurFacts {
String name;
String work;
Dimensions dimensions;
public String getName() {
return name;
}
public String getWork() {
return work;
}
public Dimensions getDimensions() {
return dimensions;
}
public class Dimensions {
double height;
long weight;
double length;
public double getHeight() {
return height;
}
public long getWeight() {
return weight;
}
public double getLength() {
return length;
}
}
}
然后你可以阅读dino:
DinosaurFacts dino = dinoSnapshot.getValue(DinosaurFacts.class);
并使用例如:
访问维度dino.getDimensions().getWeight();
答案 1 :(得分:0)
我跟着弗兰克的回答,但我收到的错误是:
子类需要一个空构造函数
即使我有一个。
<强>解决方案:强>
为它创建一个新的(外部)类。
以下是我的例子:
第一类:
public class Event {
private String name;
private Place place;
}
子类:
public class Place {
private String name;
private Location location;
}
子类的子级:
public class Location {
private String city;
private Double longitude, latitude;
}