实际上,我正在开发一个清单应用程序,在其中扫描一些EAN代码,然后插入一个项目的数量,然后将其添加到recyclerView的ArrayList中。
现在我没有问题,因为我已经制作了库存部分,其中在recyclerView中,每个项目必须具有不同的行,但是现在我必须成为订单部分,如果在ArrayList中还存在某个项目,我就必须这样做加起来就是数量,然后放在recyclerView的顶部。
当我要添加一个新项目并检查它是否存在于ArrayList中时,我试图制作一个for循环之类的东西,如果存在,我要将该项目数量与旧项目相加,但是问题是有时应用程序将崩溃,并且该项目不在recyclerView之上。
您对我该如何做有什么建议?
for(ItemModel item : itemModel){
if(item.getCodiceArticolo().equals(code.getText().toString())){
item.setQta(String.valueOf(Integer.parseInt(item.getQta()) + 1));
}
}
我试图做类似的事情。
答案 0 :(得分:1)
尝试此代码:
ItemModel matchedItem = null;
int matchedItemIndex=-1;
for (ItemModel item : itemModel) {
if(item.getCodiceArticolo().equals(code.getText().toString())){
item.setQta(String.valueOf(Integer.parseInt(item.getQta()) + 1));
matchedItem=item;
matchedItemIndex=itemModel.indexOf(item);
break;
}
}
if(matchedItemIndex>-1){
itemModel.remove(matchedItem);
itemModel.add(0, matchedItem);
notifyItemMoved(index,0);
}
答案 1 :(得分:1)
您没有将错误日志添加到列表中,所以我想您的程序会崩溃,因为有时某个值没有数量(没有有效数字),因此无法解析该数字,因此在这种情况下,您只需编写列表中还没有一个项目。
for (ItemModel item :itemModel) {
if (item.getCodiceArticolo().equals(code.getText().toString())) {
try {
item.setQta(String.valueOf(Integer.parseInt(item.getQta()) + 1));
} catch (Exception ex) {
item.setQta(String.valueOf(1));
}
}
}
如果这样做没有帮助,请附加错误日志。
答案 2 :(得分:0)
由于应用程序崩溃,可能未按照注释中的建议初始化您的arraylist。
要检查项目是否存在,可以使用
if(arraylist_of_items!=null && arraylist_of_items.contains(item)){
// do your stuff here
}
答案 3 :(得分:0)
三天后,我收到了“ ConcurrentModificationException”,但现在我正在尝试另一种受其他答案启发的方法,或者更好的是以下一种方法:
boolean nuovo = true;
for(ItemModel itemModels : itemModel){
if(itemModels.getCodiceArticolo().equals(code.getText().toString())){
itemModels.setQta(String.valueOf(Integer.parseInt(itemModels.getQta()) + 1));
nuovo = false;
break;
}
}
if(nuovo){
itemModel.add(new ItemModel(code.getText().toString(), "1"));
}
并且不再崩溃,并且看起来工作正常。
非常感谢您的建议。
更新
感谢kartik malik ANSWER,我什至可以通过在顶部添加最后一个添加项来“更新”我的商品,因为我使用的是反向recyclerView,我这样做是在浪费时间,而不是将商品放置在位置0
ItemModel matchedItem = null;
int matchedItemIndex = -1;
boolean nuovo = true;
for(ItemModel itemModels : itemModel){
if(itemModels.getCodiceArticolo().equals(code.getText().toString())){
itemModels.setQta(String.valueOf(Integer.parseInt(itemModels.getQta()) + Integer.parseInt(qta.getText().toString())));
MediaPlayer mpFound = MediaPlayer.create(OrdiniActivity.this, R.raw.errorsound);
mpFound.start();
matchedItem = itemModels;
matchedItemIndex = itemModel.indexOf(itemModels);
nuovo = false;
break;
}
}
if(matchedItemIndex> -1){
itemModel.remove(matchedItem);
itemModel.add(matchedItem);
}
if(nuovo){
itemModel.add(new ItemModel(code.getText().toString(), qta.getText().toString()));
}
使用布尔值检查项目是否存在,如果不存在,则将该项目添加为新项目。