Android listview重复的问题

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

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);

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

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

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

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

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