0

我正在尝试删除ListView已检查的项目。如果只检查了一个项目,但如果有两个或三个,则应用程序强制关闭。在错误日志上它说:

E/AndroidRuntime(2173): java.lang.IndexOutOfBoundsException: 位置 2 无效,大小为 2

当列表中有三个项目并删除 2. 任何人都可以帮助纠正这个错误吗?这是代码:

    public void delete() {
    btnDelete = (Button) findViewById(R.id.btnDelete);
    btnDelete.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            for (int i = 0; i < list.getChildCount(); i++) {
                View view = list.getChildAt(i);

                 CheckedTextView cv = (CheckedTextView) view.findViewById(R.id.checkList);
                 if(cv.isChecked()){
                    Log.i("DELETE", adapter.getItem(i).toString()+"   "+cv.toString());

                     adapter.remove(adapter.getItem(i));
                 }
                 adapter.notifyDataSetChanged();

            }
           Toast.makeText(getApplicationContext(), "Selected Items Cleared", Toast.LENGTH_SHORT).show();
       }
    });
   }
4

1 回答 1

2

问题出在你的 for 循环上。您正在 for 循环中迭代列表视图,list.getChildCount()其中不正确正确读取 Api 文档,将其替换为adapter.getCount();它将解决问题。

于 2012-05-02T18:34:34.703 回答