有谁遇到过这样类似的问题,说说方法呗
简单描述下:
比如我在每个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 的完整性