2 zhj5979 zhj5979 于 2014.12.15 17:39 提问

Android listview重复的问题

有谁遇到过这样类似的问题,说说方法呗
简单描述下:
比如我在每个item 里面加一个CheckBox,我随变选一俩个,但是我向下滑动的时候 发现下面重复出现了

6个回答

zxq521lqy
zxq521lqy   2014.12.22 13:45
已采纳

private static HashMap isSelected = new HashMap();
// 记录状态
HashMap state = new HashMap();

private void initDate() {
    for (int i = 0; i < approveList.size(); i++) {
        getIsSelected().put(i, false);
    }
}

这是关键部分,在点击事件中
h.itemBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            if (isChecked) {
                state.put(position, isChecked);
                getIsSelected().put(position, true);

            } else {
                getIsSelected().put(position, false);
                state.remove(position);
            }

        }
    });
    h.itemBox.setChecked(state.get(position) == null ? false : true);
zhj5979
zhj5979 谢谢提供代码
3 年多之前 回复
lxq_xsyu
lxq_xsyu   Rxr 2014.12.15 18:15

这个是因为getView方法的View重用导致的,你可以在数据中添加一个字段记录开关状态,然后在getView方法中每次去判断设置一下开关。

zhj5979
zhj5979 能不能简单的给点代码解释 要不然 我不是很能理解 谢谢
3 年多之前 回复
lincyang
lincyang   Rxr 2014.12.15 20:16

自己写一个adapter继承自ArrayAdapter或者BaseAdapter来分别处理checkbox吧。

bdmh
bdmh   Ds   Rxr 2014.12.16 10:04

肯定是你处理getview时有问题,记得在getview中重新填充你的view

zhj5979
zhj5979 大概我也是知道是这样的问题 但就是不会解决
3 年多之前 回复
s297165331
s297165331   2014.12.17 10:45

View被重新生成了,用final保证固定~~

zhj5979
zhj5979 在哪里用final?
3 年多之前 回复
u014173499
u014173499   2014.12.29 11:10

如果你用了 ViewHolder 要注意if else 的完整性

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!