gpt4 book ai didi

android - 使用 Firebase 对 ArrayList 进行排序

转载 作者:行者123 更新时间:2023-11-29 15:35:04 25 4
gpt4 key购买 nike

我有一个名为 myfoods 的数组列表。在 for 循环中,我从 firebase 检索数据并将其放入数组列表中。然后我在 recyclerview 中显示它的所有内容。

for (DataSnapshot ing : postSnapshot.child("foods").getChildren()) {

String name = ing.child("productName").getValue(String.class);
String quantity = ing.child("quantity").getValue(String.class);
String productId = ing.child("productId").getValue(String.class);

AllOrders order = new AllOrders(productId, name, quantity);

myfoods.add(order);

}

这是我的回收 View 。

enter image description here

我想要实现的是,将具有相同 productId 的食物数量分组。以 recyclerview 中的第 1 项和第 2 项为例。它们具有相同的 productId,我想将它们合并为一个并一直添加它们的数量。关于如何做到这一点的任何帮助?我尝试了一些 if else 语句但没有成功。

最佳答案

您可以创建一个 HashMp<String, AllOrders>包含 productId作为键和 AllOrders作为值(value)所以使用

Map<String,AllOrder> map = new HashMap<>();
for (DataSnapshot ing : postSnapshot.child("foods").getChildren()) {

String name = ing.child("productName").getValue(String.class);
String quantity = ing.child("quantity").getValue(String.class);
String productId = ing.child("productId").getValue(String.class);

AllOrders order = map.get(productId);
if(order == null){
// add new item, no order exists with productId
order = new AllOrders(productId, name, quantity);
map.put(productId,order);
}else{ // change the value of already existing item
String oldQ = order.getQuantity();
int newQ = Integer.parseInt(order.getQuantity()) + Integer.parseInt(quantity);
oder.setQuantity(String.valueOf(newQ));
}

}

// whenever you need a list
myfoods = new ArrayList<>(map.values());

我相信您可以直接获取您的 AllOrder 对象

Map<String,AllOrder> map = new HashMap<>();
for (DataSnapshot ing : postSnapshot.child("foods").getChildren()) {


// String name = ing.child("productName").getValue(String.class);
// String quantity = ing.child("quantity").getValue(String.class);
// String productId = ing.child("productId").getValue(String.class);
AllOrder entry = ing.getValue(AllOrder.class);
AllOrders order = map.get(entry.gerProductId());
if(order == null){
// add new item, no order exists with productId
map.put(productId,entry);
}else{ // change the value of already existing item
String oldQ = order.getQuantity();
int newQ = Integer.parseInt(order.getQuantity()) + Integer.parseInt(quantity);
oder.setQuantity(String.valueOf(newQ));
}

}

// whenever you need a list
myfoods = new ArrayList<>(map.values());

关于android - 使用 Firebase 对 ArrayList 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52470211/

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