到目前为止,当用户按下晶圆厂时,我已经有了此代码,将卡片视图添加到了recyclerview中。我现在也这样做了,因此当用户按下特定的卡片视图时,将显示一个对话框,当用户按下确定时,该卡片视图将被删除。但是我有问题
当recyclerview中还剩下2张Cardview时,我单击删除其中之一,就会出现此错误:
var inpt = document.getElementById("11w");
inpt.addEventListener("keyup", function(e){
e.preventDefault();
if (e.keyCode==49)
document.getELementById("11w").click();
}
});
第123行在此行
10-01 09:20:45.473 28725-28725/com.app.supermarketaislefinder E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
at java.util.ArrayList.remove(ArrayList.java:399)
at com.app.supermarketaislefinder.ProductAdapter$2$2.onClick(ProductAdapter.java:123)
at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4867)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
at dalvik.system.NativeStart.main(Native Method)
我该怎么办?
ProductAdapter.java
productList.remove(position);
答案 0 :(得分:1)
在列表中添加或删除项目时,项目在列表中的位置可能会更改。因此,在点击时,您在onClickListener
中分配的位置可能不是正确的位置。
尝试一下:
public void onClick(DialogInterface dialog, int id) {
// ...
productList.remove(holder.getAdapterPosition());
notifyItemRemoved(holder.getAdapterPosition());
// ...
}
这样,您将在单击时检查位置,而不是在绑定ViewHolder
时检查位置。