我在menuItemArrayList中提供产品,并且随着用户将他们选择的产品放入购物车中,它们将被添加到selectionItemArrayList中。这是我的代码,用于检查购物车中是否已存在该产品。如果是这样,那么只有数量会更新。
我已经纠结于代码,但是我不断收到此错误
IndexOutOfBoundsException: Index: 0, Size: 0
代码只是从recyclerview的onBindHolder的onClickListener中摘录的:
int position = getAdapterPosition();
for (int j = 0; j <= selectionItemArrayList.size(); j++) {
if (menuItemArrayList.get(position).getMenuItemName().equals(selectionItemArrayList.get(j).selectionName)) { // Loop through selection array to see if item exists in array
selectionItemArrayList.get(j).selectionQuantity += 1; // if it does exist then only update the quantity by 1
} else {
// Get the item name, price and add 1 to the quantity
String menuItemName = menuItemArrayList.get(position).getMenuItemName();
String menuItemPrice = menuItemArrayList.get(position).getMenuItemPrice();
SelectionItem selectionItems = new SelectionItem(menuItemName, menuItemPrice, 1);
selectionItemArrayList.add(selectionItems);
}
}
知道我在做什么错吗?在我将主数组中的产品名称与购物车数组中的产品名称进行比较的那一行上抛出了异常。
答案 0 :(得分:0)
这是您的循环:
for (int j = 0; j <= selectionItemArrayList.size(); j++)
遍历列表时,几乎总是要使用<
,而不是<=
。这是因为列表索引从0开始。因此,大小为2的列表的项分别为0和1。
在元素为零的列表上使用<=
时,它仍将尝试访问索引为0的元素(因为0为<=
0)。但是您的清单为空;它在索引0处没有元素。所以您崩溃了。
尝试以下方法:
for (int j = 0; j < selectionItemArrayList.size(); j++)