【发布时间】:2018-07-04 08:26:06
【问题描述】:
这是我的数据库结构。
order
key
address
cart node with 3 childs
phone
total etc
我已经尝试了所有方法来进入创建的购物车对象,但是当它给我一个错误并且当我尝试在 recyclerview 中检索它时,它只会返回第一个“0”子对象。我尝试过使用 hashmaps 和 arraylists,并且我还提供了 recyclerview 适配器来显示数据的检索。
//this is my pojo below.
public class Order {
private String phone;
private String address;
private String time;
private String date;
private String message;
private String total;
private HashMap<String,Cart> cart;
private String tax;
private String status;
public Order() {
}
//getter and setter
//code for looping over the child node
orderDB.child("orders").child(currentUser).addValueEventListener(new
ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot orderSnapshot : dataSnapshot.getChildren()) {
Order order = orderSnapshot.getValue(Order.class);
onGoingOrderList.add(order);
rvOnGoingOrders.setAdapter(onGoingOrderadapter);
}
}
}
//code for my adapter
public void onBindViewHolder(OngoingOrderViewholder holder, int position) {
holder.tvProductnameOngoingOrders.setText(onGoingOrderArrayList.get(position).getCart().get(position).getName());
如果我将数据检索到哈希图中,这是我得到的错误 https://ibb.co/d8gJ6d
【问题讨论】:
-
请将您的数据结构/代码发布为文本而不是图像/链接。
-
改成文字了。
-
"它给了我一个错误,当我尝试检索它时"什么错误?
-
另请注意,您需要在
onDataChange末尾调用onGoingOrderList.notifyDataSetChanged()。 -
我认为从 firebase 获取数据的最佳方法是在 for 循环中创建一个数组列表,并通过 pojo 类添加所有数据。然后使用 arraylist.get(position).getProperty 在 recyclerview 适配器中检索它。我已经填充了许多 recyclerviews,但这次它似乎根本不起作用。我已经编辑了我的代码并将 setAdapter 放在 for 循环中,这是检索数据的标准,并且已经多次执行,但是在 POJO 中使用 arraylist 作为变量,它似乎不起作用。
标签: android firebase arraylist firebase-realtime-database nested