今天在做项目时遇到了一个问题,是购物车功能,要删除购物车里所有集合的元素。后来发现,只能删除掉其中一半的元素,经过调试发现,是因为在遍历数据的时候,i++在不断的增长,而调用data.remove(i)之后,数据的集合又在不断的减少,最终导致只能删除掉其中一半的元素。试了一下,如果提前如获取整个数据的大小,在进行选择性删除某些元素的时候,又会出现数组越界的异常。最后发现,要在循环每一个元素并且进行选择性判断之后,加一行代码i--,让i也随着数据的减少而减少,这个问题就解决了。以下为详细代码
//这是点击删除按钮,删除选中的项
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//遍历整个数组
for(int i = 0;i
//这里判断一下这个项是否为选中项
if(data_CVS.get(i).getChecked().equals("Y")){
//删除符合这个条件的一项
data_CVS.remove(i);
//刷新整个数据
dataCVSChanged();
}
//关键是这行代码,让i能随着循环而减少
i--;
}
}
});
至此整个问题就已经解决了