7_Android的多选按钮(CheckBox)


1.多选按钮(Check Box)的基本概念

  • 提供一系列的选项,给用户去选择

使用多选框(Check Box)的方法步骤:

1.在XML文件当中使用<CheckBox/>标签

2.在代码当中使用CheckBox的对象标签表示

3.为CheckBox设置监听器,两种方法:1.常用的为:OnClickListener监听器 2. OnCheckChangeListener监听器

我们用例子来演示:

  • 创建一个Android 应用程序,命名为:S04_CheckBox

  •  在XML文件当中使用<CheckBox/>标签,线性垂直布局,创建三个标签:吃饭、睡觉、看书

  •  在代码当中使用CheckBox的对象标签表示,在MainActivity当中,获取代表CheckBox控件的对象 

  • 为一个控件绑定监听器,以监控控件的行为,详细方法,链接:点我跳转
  • 创建一个内部类OnBoxClickListener去实现OnClickListener接口,然后复写onClick()方法,接着生成OnBoxClickListener类的对象,接下来把多选框的点击行为绑定到OnBoxClickListener类的对象,一旦多选框中的哪一个被选中都会执行OnBoxClickListener类的Onclick( )方法:

  • 现在的问题是无论是哪一个多选框被选中或者取消都会调用onClick方法,输出:“CheckBox is clicked” 我们希望能区分是哪个被选中,和未被选中的状态。

  • 我们需要去解决的问题:是哪个多选框被点击,是选中还是取消;
  • 为了更加直观,我在布局文件加了三个TextView控件,用来显示CheckBox被勾选的状态:

然后在MainActivity当中,获取代表TextView控件的对象 :

效果如下:

  • 我们可以发现onClick(View view)方法是有传进去一个参数的,这个参数传进去的参数就是被选中或取消选中的CheckBox对象,因为CheckBox是View的子类,所以可以传入: 

 

  • 而View有一个方法是得到对象的id,我们知道,我们在布局文件创建CheckBox都为其添加了这个ID,我们只需打印这个Id和R.java文件的id进行对比我们就知道,当哪个CheckBox点击,传入的就是哪个CheckBox对象的ID.
  • 既然这样我们就可以通过判断CheckBox对象的Id,就可以知道是哪个多选框被按下了?
  • 那如何知道被选中还是取消选中呢?
  • 因为CheckBox对象有一个方法:isCheck( )方法,如果被按下函数返回真,否则返回假,因为是CheckBox对象的方法,所以我们需要把它向下转型为CheckBox类型。
  • 我们修改onClick(View view )根据传入的参数判断,哪个被选中或者取消选中:

  • 我们上面已经把id打印出来了,我们看看,当我们只选中吃饭的时候打印出来的ID,和R.java里面吃饭的ID是否匹配:

可以发现在R.java里面的ID是一样的 ,这样我们就知道了,多选框可以通过去判断Id去区分哪个CheckBox对象,然后用CheckBox对象的isCheck方法判断CheckBox对象(一个多选框)的状态。

  • 接下类我们再去实现OnCheckChangeListener接口(前面实现的是OnClickListener)

  • 首先和前面的一样去实现这个接口,只是复写的函数和功能不一样,这个函数有两个参数,具体如下:

 

注意需要导入包:

 

然后绑定监听器:

 

和刚才实现的功能是类似的,效果如下:

 


附加例子:如果需要加个全选的功能我们怎么做呢,按全选就全部选中,取消全选,就全部取消选中,效果如下图:

  • 首先在布局文件增加一个TextView控件显示全选的状态,然后再增加一个全选的CheckBox控件:

 

  • 然后在MainActivity当中,获取代表TextView控件和CheckBox控件的对象,并绑定监听器 : 

  • 修改OnCheckedChangeListener实现类的方法onCheckedChanged:

  • 修改完成,运行程序,效果入下:

 


附录: 

本博文Demo下载:https://github.com/zGuangYuan/Android- 

猜你喜欢

转载自blog.csdn.net/qq_36243942/article/details/81744237