我是Firebase的新手,面临以下问题:
我将一个对象(Bill)上传到我的firebase,一个属性是一个ArrayList。它适用于上传。
但是当我检索数据时,由于ArrayList
,我得到了错误 com.firebase.client.FirebaseException: Failed to bounce to type
主要活动:
Firebase billRef = new Firebase(getResources().getString(R.string.FB_billRef));
Query billQuery = billRef.orderByChild("status").equalTo("Ordered");
billQuery.addChildEventListener(
new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Bill bill = dataSnapshot.getValue(Bill.class);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
}
);
Bill.class:
public class Bill {
private int billID;
private int tableID;
private int numCustomer;
private String status;
private ArrayList<Order> orders;
public Bill(int billID, int tableID, int numCustomer,String status,ArrayList<Order> orders){
this.billID = billID;
this.tableID = tableID;
this.numCustomer = numCustomer;
this.status = status;
this.orders = orders;
}
public ArrayList<Order> getOrders() {
return orders;
}
public void setOrders(ArrayList<Order> orders){
this.orders = orders;
}
public void addOrder(Order o){}
public void delOrder(int orderID){}
public int getBillID(){return billID;}
public int getTableID(){return tableID;}
public int getNumCustomer(){return numCustomer;}
public String getStatus(){return status;}
}
如何将这种类型的firebase对象检索到java对象? 非常感谢!
我必须处理的唯一方法是逐个分解DataSnapshot属性并使用 datasnapshot.child(“orders”)获取Order.getChildren()
但这不是一个好方法。我可以直接获得Bill Object的任何方法吗?
答案 0 :(得分:1)
我知道对于那个问我的人来说可能有点晚了,但至少对其他人来说...... 使用HashMaps而不是ArrayLists很有帮助。 Firebase基于散列图,因此您可以按键访问任何属性。在这种情况下,我建议您使用HashMap,而不是由数组列表表示的Bills属性。 (这对更新密钥也很有帮助)