listview中的switch遇到的问题

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可以监听它的状态(任何情况)

关注我的技术公众号,每个工作日都有优质技术文章推送。
微信扫一扫下方二维码即可关注:
图片

猜你喜欢

转载自blog.csdn.net/qq_28190653/article/details/78528621
今日推荐