【发布时间】:2017-11-29 19:49:12
【问题描述】:
我想知道是否可以保存包含 Map 属性的对象,如下所示:
public class Item {
public String id;
public String name;
public double price;
public Map<String, Adds> adds;
...
Adds 是另一个自定义类,声明了所有 getter/setter,与 Item 相同。 我可以直接使用 setvalue 保存添加地图,但是当我尝试 setvalue() 时,我不断收到以下错误。
原因:com.google.firebase.database.DatabaseException:不支持具有非字符串键的地图
DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("test").setValue(p);
这是我正在尝试的,当然 p 是 Item 的实例。有没有办法像这样直接保存对象?或者我需要为地图做另一个设置值吗?
这里有两个类
public class Item {
public String id;
public String name;
public double price;
public Map<String, Adds> adds;
public Item() {
}
public Item(String name, double price) {
this.name = name;
this.price = price;
adds = new HashMap<>();
}
@Exclude
public void addAdds(Adds adds){
this.adds.put(adds.getId(), adds);
}
@Exclude
public void removeAdds(Adds adds){
this.adds.remove(adds);
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
@Exclude
public void setPrice(double price) {
this.price = price;
}
public Map<String, Adds> getAdds() {
return adds;
}
public void setAdds(HashMap<String, Adds> adds) {
this.adds = adds;
}
}
这里是添加
public class Adds {
public String id;
public String name;
public double plus;
public double minus;
private boolean primary = false;
public Adds() {
}
public Adds(String name) {
}
public Adds(String id, String name, double plus, double minus) {
this.id = id;
this.name = name;
this.plus = plus;
this.minus = minus;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public double getPlus() {
return plus;
}
public double getMinus() {
return minus;
}
private boolean isPrimary() {
return primary;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Adds{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", plus=" + plus +
", minus=" + minus +
", primary=" + primary +
'}';
}
}
【问题讨论】:
标签: android firebase firebase-realtime-database