checkbox是我们开发中经常用到的选择控件

  1. 通过selector可以自定义checkbox选择样式
  2. 通过isChecked()方法,可以获取选中状态
  3. 通过setOnCheckedChangeListener监听选中改变状态
  4. setCheck(true/false)设置选中状态
  5. 可以setOnClickListener设置点击事件

说一下经常遇到的坑

  1. 焦点抢占事件

checkbox通常和listview一块使用的时候,item布局中使用checkbox,cb会抢占listview的item点击事件,解决方法:
给checkbox设置 android:focusable=”false”
在最外层父布局设置 android:descendantFocusability=”blocksDescendants”


2. setOnCheckedChangeListener()和setCheck()共同使用冲突问题

如果你代码中有根据数据设置checkbox选中状态,又同时监听了setOnCheckedChangeListener()方法,setChecked()时会触发此listener。
会造成页面checkbox选择错乱问题。
如果有setChecked()方法,此时,用setOnClickListener代替setOnCheckedChangeListener方法。

   if (bean.isCheck()) {           cb.setChecked(true);        } else {            cb.setChecked(false);        }        cb.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                cb.isChecked();//获取选中状态            }        });

3. 结合listView多选使用
很多时候会结合列表多选使用checkbox,我们可以在列表数据对象中,自定义一个 ischeck字段,初始化为false,非选中状态,如果默认选中,同理初始化为true。
当我们点击checkbox改变状态时,手动调用改变ischeck字段值,最后通过遍历数据集合,判断ischeck字段来获取选中的条目。

class ItemBean{  private boolean isCheck;//选中状态  }//监听checkbox改变状态       cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {                if (b) {                    ItemBean.setCheck(true);                } else {                    ItemBean.setCheck(false);                }            }        });//最后筛选选中条目List list;//初始时候所有值,遍历此集合 public List getList() {        Listdatas = new ArrayList<>();//创建新集合,用来存放选中的值        for (int i = 0; i < list.size(); i++) {            if (list.get(i).isCheck()) {                datas.add(as.get(i));            }        }        LogUtil.e("+++++++++++++++选中项" + datas.size(), "");        return datas;    }

更多相关文章

  1. android浏览器研究-UserAgent
  2. Android(安卓)UI 常用控件讲解
  3. Android(安卓)ListView 滑动背景为黑色的解决办法
  4. Android控件
  5. Git在Android(安卓)Studio中的使用
  6. 7.2 android volley超时重试设置
  7. Android——自由拖动并显示文字的悬浮框实现
  8. compileSdkVersion, minSdkVersion 和 targetSdkVersion,坑爹的A
  9. Android(安卓)camera preview and take picture with V4l2

随机推荐

  1. 百度地图自定义公交路线源码
  2. Ubuntu 加速编译Android设置ccache缓存
  3. android 设置颜色的三种方法
  4. Android studio 新建一个空白工程提示:Con
  5. Android(安卓)SQLite事务处理结合Listvie
  6. Android探索之旅 | Android(安卓)Studio
  7. Android 7.0自定义dialog错误permission
  8. Linux 安装 JDK + Gradle + Android SDK
  9. Android文件读写权限
  10. Android——NDK开发(一)