gpt4 book ai didi

Android:使用 ArrayList 从 Firebase 检索对象

转载 作者:行者123 更新时间:2023-11-29 01:18:52 24 4
gpt4 key购买 nike

我是 Firebase 新手,面临以下问题:

我将一个对象 (Bill) 上传到我的 firebase,其中一个属性是 ArrayList。它适用于上传。

但是当我检索数据时,由于 ArrayList 而出现错误

com.firebase.client.FirebaseException: 弹回类型失败

Firebase Structure

主要 Activity :

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").getChildren()

但这不是一个好的方法。有什么方法可以直接拿到账单对象吗?

最佳答案

我知道我可能会迟到一点,但至少对其他人来说...使用 HashMaps 而不是 ArrayLists 很有帮助。 Firebase 基于散列映射,因此您将能够通过键访问任何属性。在这种情况下,我建议您使用 HashMap,而不是用数组列表表示的 Bills 属性。 (这也有助于更新 key )

关于Android:使用 ArrayList 从 Firebase 检索对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38076704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com