我正在实施删除网格视图上的多个图像删除按钮单击。我在Grid-View中放置了复选框和图像视图。我在图像上选择了多个复选框,这些图像被删除,但有时候我的应用程序崩溃并且得到异常java.lang.IndexOutOfBoundsException:索引5无效,大小为4在这一行= data.remove(pos);在复选框中单击事件。如何解决此问题。Android:java.lang.IndexOutOfBoundsException:索引5无效,大小为4
这是我在Adapter类代码
final BitmapItems item = data.get(position);
//holder.imageTitle.setText(item.getTitle());
holder.image.setImageBitmap(item.getBitmap());
final int pos = position;
Log.e("pos ", " = " + pos);
holder.checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
CheckBox cb = (CheckBox) v;
Toast.makeText(getContext(), "Clicked on Checkbox: " + cb.getText() + " is " + cb.isChecked(), Toast.LENGTH_LONG).show();
if(cb.isChecked())
{
int checked = 1;
Log.e("", "" + checked);
String path = ((String) f.get(pos));
selectedFile.add(path);
Log.e("path ", " = " + path);
data.remove(pos);
}
else
{
int checked = 0;
Log.e("",""+ checked);
}
}
});
这是在练习我的删除按钮的代码
imgDeleteImagesFromGallery = (ImageView)findViewById(R.id.imgDeleteImage);
imgDeleteImagesFromGallery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
gridAdapter.notifyDataSetChanged();
Iterator iterator = selectedFile.iterator();
while (iterator.hasNext())
{
gridFilePath = new File(iterator.next().toString());
if(gridFilePath.exists())
{
gridFilePath.delete();
Log.e("File deleted","Succesfully !!");
}
}
}
});
这里登录猫错误
10-14 04:16:02.635 15018-15018/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.tazeen.classnkk, PID: 15018
java.lang.IndexOutOfBoundsException: Invalid index 5, size is 4
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.remove(ArrayList.java:403)
at com.example.tazeen.classnkk.AddPost$GridView_Adapter$1.onClick(AddPost.java:931)
at android.view.View.performClick(View.java:4756)
at android.widget.CompoundButton.performClick(CompoundButton.java:125)
at android.view.View$PerformClick.run(View.java:19748)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
尝试设置POS的位置1 – dasjkdj
那么,如果大小为4,你可以” t删除5的索引,但你已经知道了。可能的原因是用户可能已经快速轻敲了两次,并且在物品被移除后第二次来电。只需在删除调用之前添加一个数组大小检查 – e4c5