Android 删除选中的ListView项
我正在尝试删除选中的Android 删除选中的ListView项,android,checkbox,android-listview,Android,Checkbox,Android Listview,我正在尝试删除选中的ListView项。如果只检查了一个项目,则该功能有效,但如果有两个或三个项目,则应用程序强制关闭。错误日志上显示: E/AndroidRuntime(2173):java.lang.IndexOutOfBoundsException:无效位置2,大小为2 当列表中有三项并删除2项时。有人能帮忙纠正这个错误吗?代码如下: public void delete() { btnDelete = (Button) findViewById(R.id.btnDelet
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();
}
});
}
public void delete(){
btnDelete=(按钮)findViewById(R.id.btnDelete);
setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
对于(int i=0;i
问题在于for循环。您在for循环中通过list.getChildCount()
迭代列表视图,该操作不正确。请正确读取Api文档,将其替换为adapter.getCount()代码>它将解决问题。这确实有帮助,但现在如果有5项,并且前两项(0和1)已选中;位置0和2被删除,留下1、3和4。我知道发生了什么,但不确定如何纠正。如果检查了0和1位置。在循环中,删除0后1变为0,导致第二次删除2,留下1。确定修复,我必须调整lop以开始从列表的底部向上删除,向顶部或0移动。这就是我将其更改为“for(int i=adapter.getCount()-1;i!=-1;i-)”的原因。当项目添加到列表中时,仍然会出现一些错误,在解决这些错误后会更新代码。但这个问题已经解决了。在Android中删除列表中的选中项是多么困难。