按照惯例,先上图:

Screenshot_2018-09-04-19-42-51-171_中国移动.png

类似这样的n选一的需求是很常见的,用原生的 RadioGroup 几乎无法实现,那么就需要一个类似功能 RadioGroup ,可以帮我们管理选中项状态(并且支持设置单选和多选),同时能方便的自定义里面子项的UI布局,要是还能像 list 一样支持用优雅的 adapter 模式设置内容和 layout 就更好了。

于是:

引入

compile 'com.yinzihao:YinLayout:{latest-version}'

使用指南

CommonCheckableGroup

多选或单选项的父布局,类似于{@link android.widget.RadioGroup}。

直接子 view 需要实现{@link Checkable}接口或利用框架中的{@link CheckableTag}(事实上是一个实现了{@link Checkable}接口的{@link FrameLayout})包裹才能被监听选中状态。

在 xml 中使用

android:id="@+id/common_checkable_group"

android:layout_height="wrap_content"

android:layout_width="match_parent"

app:multiple="true"

android:orientation="vertical">

android:background="@drawable/background_selector"

android:layout_height="wrap_content"

android:layout_width="match_parent"

android:padding="10dp"

android:text="选项1"

android:textColor="@android:color/white" />

android:background="@drawable/background_selector"

android:layout_height="wrap_content"

android:layout_marginTop="5dp"

android:layout_width="match_parent">

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:padding="10dp"

android:text="选项2"

android:textColor="@android:color/white" />

将选项作为 CommonCheckableGroup 的子 view 即可实现所需效果。

xml 中设置 multiple 属性为 ture 则表示可多选。

在代码中使用

commonCheckableGroup.setLayoutAdapter(new BaseLayoutAdapter(getApplicationContext(), stringList, R.layout.checkable_group_layout_item) {

@Override

public void dataBind(View itemView, int position, String data) {

TextView textView = (TextView) itemView.findViewById(R.id.tv_item);

textView.setText(data);

}

});

在代码中通过 adapter 的方式可以更灵活的设置多个选项,BaseLayoutAdapter 构造函数中的第3个参数中的 xml 即每个选项的布局文件,会在 dataBind() 回调中解析为 view 返回。使用者在此方法中将数据源与布局文件绑定显示。

commonCheckableGroup.setCheckedListener(new CommonCheckableGroup.CheckedListener() {

@Override

public void onCheckChange(Checkable checkable) {

List checkedItemList = commonCheckableGroup.getCheckedItemList();

}

});

通过 setCheckedListener() 设置选中事件监听。通过 getCheckedItemList() 得到当前选中的对象列表。

如果你需要在 CheckableGroup 的子项被点击,框架中的选中逻辑被触发之前根据情况拦截此次事件,可以设置拦截器

commonCheckableGroup.setItemClickInterceptor(new CheckableGroupManager.ItemClickInterceptor() {

@Override

public boolean onInterceptorItemClick(Checkable checkable) {

if (...) {

//拦截

return true;

}

//不拦截

return false;

}

});

common_check_layout.gif

radiogroup多选_类似 RadioGroup 的选中管理布局相关推荐

  1. radiogroup多选_为何多组RadioGroup 里面的RadioButton 会出现多选状态​?

    为何同一组RadioGroup 里面的RadioButton 会出现多选状态? 最近在做一个项目,有两排RadioGroup,每一排radioGroup有五个radiobutton,我分别给每一个Ra ...

  2. radiogroup多选_单选按钮和多选按钮

    [最后结果显示在一个界面中,但是分开理解] 1.单选按钮(RadioGroup:是单选按钮组和RadioButton) 1)在activity_main.xml中控件是线性布局 xmlns:andro ...

  3. 将jQuery的复选框设置为“已选中”?

    我想做这样的事情来使用jQuery勾选一个checkbox : $(".myCheckBox").checked(true); 要么 $(".myCheckBox&quo ...

  4. 点击button按钮实现全选_全选按钮的实现及事件的处理

    这种全选的效果在后台是很需要的,因为有时候数据很多,如果想删除全部的数据,没有全选按钮岂不是很麻烦,所以很有必要实现这种全选的效果,并执行相关的事件,下面就来看看如何实现 先来看看第一种方法: 首先先 ...

  5. Leaflet框选截图 网页框选截图 -- 类似QQ截图功能

    Leaflet框选截图 网页框选截图 -- 类似QQ截图功能 功能需求 搜索资源 功能拆分 进阶功能 结束语 实现截图(红框中即是将要截取的内容) 下载到本地的截图 功能需求 近日. 项目中有一需求: ...

  6. android中radiogroup作用,Android View系列---RadioGroup与RadioButton

    RadioGroup与RadioButton配合实现一组数据的单选问题. 插播一条信息,在设置RadioButton的textColor的选中效果时,不能在drawable中创建想xml,得在res/ ...

  7. 【VTK】VTK框选表面拾取面片——仅选中前表面

    VTK框选表面拾取面片--仅选中前表面 接上一篇 VTK框选表面拾取三角面片--通过观察者命令模式 上一篇最后遗留一个问题,框选表面后,会把模型背面的面片也一起选中.所以这篇内容是解决该问题的. 效果 ...

  8. JS判断GridView中复选框有没有被选中

    在执行多选操作时,如果在页面前台做下判断,有没有选择要被操作的项,如果没有,提示一下,会给客户一种比较友好的效果. //JS中判断的方法: //判断GridView控件中的复选框有没有被选中的,gdv ...

  9. layui如何获取父节点的父节点_layui树形组件(右键、父节点选中子节点全被选中)...

    一:右键菜单: layui里面没有给到右键菜单,所以,我自己把源码改了一下: 找到layui文件夹里modules下的tree.js 用以上代码,替换以下代码 当i.which等于3,是右键事件,等于 ...

最新文章

  1. 用FFT求信号相位谱
  2. OpenCvSharp手绘ROI区域+模板匹配+霍夫变换检测圆的边界
  3. SQL server2000数据库备份和还原语句
  4. pygame的学习以及python的巩固(窗口尺寸的显示)
  5. 自制操作系统学习笔记(1)-虚拟机启动软盘
  6. jrockit_Java堆空间– JRockit和IBM VM
  7. Java 9幕后花絮:新功能从何而来?
  8. python实验练习-类的多继承
  9. 从创业失败中学到的七条教训
  10. 10kv电压互感器型号_电气行业需要知道的10KV电压互感器基本技术参数
  11. noi 3531 判断整除
  12. 为什么要破坏JVM的双亲委派模型
  13. 数据科学 IPython 笔记本 8.3 Matplotlib 可视化
  14. c语言数组处理实验报告心得体会,C语言实验报告总结计划数组.doc
  15. crop video in ffmpeg
  16. 【leetcode】91. Decode Ways A-Z的字母表示1-26的数字,反向破解多少种字符串的可能性...
  17. 真实评测 i3 1115G4和i7 1165G7选哪个
  18. Windows系统下运行hadoop、HBase程序出错Could not locate executablenull\bin\winutils.exe in the Hadoop binaries
  19. shell脚本实操学习之函数、正则表达式
  20. 如何优雅的阅读论文——福昕阅读器

热门文章

  1. 漫画:脑筋急转弯算法题目(???)
  2. el-calendar日历组件
  3. Linux小记--centos,debian系统挂载镜像方式
  4. acer switch 10 linux,【AcerSwitch10E评测】拆开来用的电脑 Acer Switch 10E评测_Acer Switch 10E_笔记本评测-中关村在线...
  5. BugFree 的安装
  6. 机器学习-卷积神经网络之深度残差网络(三)
  7. HOG特征提取-python实现
  8. Golang中 int int8 int16 int32 int64的区别和取值范围
  9. android 魅族手机bug多,魅族Flyme6是悟空请来的?Bug竟然有这么多?
  10. i7 12700 K和127000 KF差距 i712700 K和127000KF对比