リストがあり、各行にチェックボックスがあります。すべてのチェックボックスの位置を取得してからループし、list.remove(indexOfpostion) で各行を削除しますが、javaをスローします。 lang.IndexOutOfBoundsExceptionrecyclerviewのlist.remove()エラー
注:私のリスト名は「Dish」です。
コード:
public void removeAtAll() {
Iterator it = selectedCheckBox.entrySet().iterator();
if(!it.hasNext()){
new makeDialog().makeDialog(mContext,mContext.getResources().getString(R.string.share_no_data));
}
else {
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
int key = (Integer) pair.getKey();
if ((Boolean) pair.getValue()) {
// it.remove();
DishToDel.add(dish.get(key).getDishID());
}
}
//
for (Object o : selectedCheckBox.entrySet()) {
Map.Entry pair2 = (Map.Entry) o;
int key2 = (Integer) pair2.getKey();
if ((Boolean) pair2.getValue()) {
dish.remove(getItem(key2)); // error here
notifyItemRemoved(key2);
notifyItemRangeChanged(key2, dish.size());
}
}
chooseAllradioButton.setSelected(false);
favhtask = new FavAsyncTaskDelete(mContext, DishToDel);
favhtask.execute();
}
// process message deleteing
}
エラーログ
FATAL EXCEPTION: main
Process: com.TopLine.nokhbatalatbaq, PID: 32327
java.lang.IndexOutOfBoundsException: Index: 2, Size: 1
at java.util.ArrayList.get(ArrayList.java:411)
at com.TopLine.nokhbatalatbaq.adapter.FavAdapterDishes.removeAtAll(FavAdapterDishes.java:344)
at com.TopLine.nokhbatalatbaq.adapter.FavAdapterDishes$4.onClick(FavAdapterDishes.java:151)
at android.view.View.performClick(View.java:6205)
at android.view.View$PerformClick.run(View.java:23653)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
エラーログを追加できますか? – Carlton
done、それは3つの選択されたボックスがあり、最後にリストから削除しようとすると、その位置のリストが2になりますが、リストには位置0の要素が1つしかないので、私のリストの行は一度だけですか? –
あなたのgetItemが最も可能性が高いのは、このメソッドがリスト縮小ではなく、その唯一の前提です。 –