首页 > 解决方案 > firebase android中的嵌套列表对象

问题描述

https://ibb.co/ieRwsJ

https://ibb.co/c4xmsJ

https://ibb.co/d8gJ6d

这是我的数据库结构。

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

标签: androidfirebasearraylistfirebase-realtime-databasenested

解决方案


您的代码中的问题是您在 for 循环中设置了适配器。要解决此问题,请移动以下代码行:

rvOnGoingOrders.setAdapter(onGoingOrderadapter);

退出 for 循环,否则您最终只会显示一项。


推荐阅读