android - firebase android中的嵌套列表对象
问题描述
这是我的数据库结构。
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
解决方案
您的代码中的问题是您在 for 循环中设置了适配器。要解决此问题,请移动以下代码行:
rvOnGoingOrders.setAdapter(onGoingOrderadapter);
退出 for 循环,否则您最终只会显示一项。
推荐阅读
- ios - 为什么 #available(iOS 11, *) 在 iOS 12 上解析为 true?
- kubernetes - 有没有办法让两个具有相同应用程序的容器连接到 Kubernetes 上的同一个数据库?
- powershell - 使用通配符作为驱动器号启动进程
- android - 使用 Firebase-UI、Firestore 作为数据库和 Picasso 时,图像不会出现在 RecyclerView 中
- c - 加速包含事件的 ODE 的并行求解
- php - Smarty输出动态变量
- jhipster - 我应该如何将漂亮的“显示值”映射到 JDL 枚举?
- atom-editor - 如何从原子打开特定文件?
- r - R - 来自数据集的自定义概率分布的随机绘图
- java - jboss intellij https 管理接口不支持,请禁用它并改用http管理接口