3つのArrayListsがあります。 1つは、RecyclerView.Adapterが表示している製品のリストです。これはproductListと呼ばれます。 2番目のリストはcartItemsです。これは基本的にユーザーがproductListから選択したすべての製品を保持します。 3番目はカートの更新された値をすべて保持するupdatedCartです。私の目標は、updatedCartリストを使用してcartItemsとproductListを更新することです。私はproductIdsを比較することでこれをやっています。それらが等しい場合は、counterと呼ばれる値を更新し、そうでなければ削除します。しかし、私はIllegalStateExceptionを渡って来ています。私はこれについて私の論理についても100%確信していません。2つのArrayListsを繰り返し、新しいリストの値を使って元のものを更新する
これは、updatedCartからproductListとcartItemsを更新する私の方法です。
public void updateCartItems(ArrayList<Product> updatedCart) {
// "productList" is a full list of products that the adapter displays
// "cartItems" is a list of items user adds to the cart
// "updatedCart" is a list of updated cart items (user can remove an item or increase the number of items he's purchasing)
// i want the original "cartItems" and "productList" to update it's values according to the "updatedCart"
if (updatedCart.size() == 0) {
Iterator<Product> productIterator = cartItems.iterator();
while (productIterator.hasNext()) {
Product product = productIterator.next();
productIterator.remove();
}
for (Product listProduct : productList) {
listProduct.setCounter(0);
}
} else {
Iterator<Product> productIterator = cartItems.iterator();
while (productIterator.hasNext()) {
Product product = productIterator.next();
for (Product cartProduct : updatedCart) {
if (cartProduct.getProductId() != product.getProductId()) {
productIterator.remove();
} else {
product.setCounter(cartProduct.getCounter());
}
}
}
for (Product listProduct : productList) {
for (Product cartProduct : cartItems) {
if (listProduct.getProductId() == cartProduct.getProductId()) {
listProduct.setCounter(cartProduct.getCounter());
} else {
listProduct.setCounter(0);
}
}
}
}
notifyDataSetChanged();
}
これは、私は、エラー
05-28 03:25:31.769 23280-23280/com.innovationsquare.organicshuttle E/InputEventSender: Exception dispatching finished signal.
05-28 03:25:31.769 23280-23280/com.innovationsquare.organicshuttle E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
05-28 03:25:31.771 23280-23280/com.innovationsquare.organicshuttle E/MessageQueue-JNI: java.lang.IllegalStateException
を得ているエラーがelse
ブロックにproductIterator.remove()
ラインに表示されています。このエラーを取り除くこととは別に、私の論理がここで音であるかどうかを知りたい。 私はstackoverflowを助けてください、あなたは私の唯一の希望です。