listview中的switch遇到的问题
一、状态的变化
选中之后,滑出这个页面,再滑进,会变为未选中状态,解决办法:
1、定义一个hashmap,用来存储listview中switch的初始所有状态
2、不要在getView中定义,在构造方法中定义
for (int i = 0;i<list.size();i++){
if (this.list.get(i).getStatus().equals("1")) {
switch_status.put(i,true);
} else {
switch_status.put(i,false);
}
}
3、设置setOnCheckedChangeListener监听方法,监听状态,并随时改变hashmap中的初始值
viewHolder.switch_def.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
switch_status.put(position,true);
}else {
switch_status.put(position,false);
}
}
});
4、向服务器提交数据
二、switch中setOnCheckedChangeListener和setOnClickListener的区别
- 当switch的状态不是通过点击事件改变的时候,而是通过其他的方式改变的时候,比如setCheck(),setOnClickListener就无法完成这种情况下的监听
- setOnCheckedChangeListener可以监听它的状态(任何情况)
关注我的技术公众号,每个工作日都有优质技术文章推送。
微信扫一扫下方二维码即可关注: