for循环删除List中的数据产生的问题

本文介绍了解决List视图删除元素时遇到的问题——如何避免因元素删除导致的坐标前移而引发的空指针异常或其他错误。提供了两种实用方案:使用迭代器遍历删除及采用倒序方式移除元素。

在应用中大家可能会碰到一些场景 比如 一个listview 删除选中条目
这需要去查找选中项并移除 但是list 集合 坐标会前移 所以第二次删除的时候就会有找不到的清空也就是空指针或者其他问题
解决方案有两个 一个是用迭代器另外一个就是倒序list删除

迭代器

 Iterator it = appAdapter.getData().iterator();
                    while (it.hasNext()) {
                        Appli appli = (Appli) it.next();
                        if (appli.isCheck) {
                            it.remove();
                        }
                    }

倒序删除

 for (int i = groupFileorPhotoList.size()-1; i >=0; i--) {
                        List<ChildFileorPhoto> photos = groupFileorPhotoList.get(i).getChildFileorPhoto();
                        for (int j = photos.size()-1; j >=0; j--) {
                            ChildFileorPhoto childPhoto = photos.get(j);
                            if (childPhoto.isCheck()) {
                                photos.remove(childPhoto);
                                if (!(photos.size()>0)) {//如果childe数据集合不大于0 就说明childe被清空就要移除掉当前grouitem
                                    groupFileorPhotoList.remove(i);
                                }
                            }
                        }
                    }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值