在Android开发中我们经常会使用CheckBox控件,那么怎么实现CheckBox控件的全选,反选呢

首先布局我们的界面:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <TextView android:id="@+id/textviewtitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:text="平时喜欢做什么事情?" /> <CheckBox android:id="@+id/checkboxall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@id/textviewtitle" android:layout_alignTop="@id/textviewtitle" android:layout_toRightOf="@id/textviewtitle" android:text="全选" /> <!--内容的CheckBox--> <CheckBox android:id="@+id/checkbox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textviewtitle" android:layout_marginRight="80dp" android:text="玩游戏" /> <CheckBox android:id="@+id/checkbox2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textviewtitle" android:layout_toRightOf="@+id/checkbox1" android:text="学习" /> <CheckBox android:id="@+id/checkbox3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/checkbox1" android:text="敲代码" /> <CheckBox android:id="@+id/checkbox4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/checkbox2" android:layout_toRightOf="@+id/checkbox1" android:text="跑步" /> <CheckBox android:id="@+id/checkbox5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/checkbox3" android:text="游泳" /> <CheckBox android:id="@+id/checkbox6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/checkbox4" android:layout_toRightOf="@+id/checkbox1" android:text="睡觉" /> <TextView android:id="@+id/textviewinfo" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/checkbox5" android:layout_marginTop="20dp" android:text="已选择:"/> </RelativeLayout>

注意要给对应的CheckBox编写Id,

接下来就是java代码了:代码主要实现的功能,点击全选按钮时,我会
把所有的选项选中,在全选的情况下,我取消任意一个复选框,那么全选按钮也会取消选中,同理,我选中了所有的复选框后,其全选按钮也会选中。

代码如下:

package com.dc.work3;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; import android.widget.Toast; import java.util.LinkedList; import java.util.List; /** * Created by 丁先森 */ public class MainActivity2s extends AppCompatActivity { private CheckBox checkboxall; private CheckBox checkBox1; private CheckBox checkBox2; private CheckBox checkBox3; private CheckBox checkBox4; private CheckBox checkBox5; private CheckBox checkBox6; private TextView textviewinfo; private List<String> checkedStr; //操作取消一个时,全选取消,这个变量是是否是用户点击 private boolean checkFoUser=true; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_2); checkboxall = (CheckBox) findViewById(R.id.checkboxall); checkBox1 = (CheckBox) findViewById(R.id.checkbox1); checkBox2 = (CheckBox) findViewById(R.id.checkbox2); checkBox3 = (CheckBox) findViewById(R.id.checkbox3); checkBox4 = (CheckBox) findViewById(R.id.checkbox4); checkBox5 = (CheckBox) findViewById(R.id.checkbox5); checkBox6 = (CheckBox) findViewById(R.id.checkbox6); textviewinfo = (TextView) findViewById(R.id.textviewinfo); checkBox1.setOnCheckedChangeListener(changeListener); checkBox2.setOnCheckedChangeListener(changeListener); checkBox3.setOnCheckedChangeListener(changeListener); checkBox4.setOnCheckedChangeListener(changeListener); checkBox5.setOnCheckedChangeListener(changeListener); checkBox6.setOnCheckedChangeListener(changeListener); checkboxall.setOnCheckedChangeListener(changeListener); checkedStr=new LinkedList<>(); } public CompoundButton.OnCheckedChangeListener changeListener = new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { switch (buttonView.getId()){ case R.id.checkbox1: case R.id.checkbox2: case R.id.checkbox3: case R.id.checkbox4: case R.id.checkbox5: case R.id.checkbox6: String str=buttonView.getText().toString(); if(isChecked){ checkedStr.add(str); }else { checkedStr.remove(str); } // checkFoUser=false; checkboxall.setOnCheckedChangeListener(null); if(checkBox1.isChecked()&&checkBox2.isChecked()&&checkBox3.isChecked()&&checkBox4.isChecked()&&checkBox5.isChecked()&&checkBox6.isChecked()){ //表示如果都选中时,把全选按钮也选中 checkboxall.setChecked(true); }else { //否则就全选按钮去不选中,但是这样会触发checkboxall的监听,会把所有的都取消掉 checkboxall.setChecked(false); } // checkFoUser=true; /*第二种方法*/ checkboxall.setOnCheckedChangeListener(changeListener); break; case R.id.checkboxall: if(checkFoUser) { checkBox1.setChecked(isChecked); checkBox2.setChecked(isChecked); checkBox3.setChecked(isChecked); checkBox4.setChecked(isChecked); checkBox5.setChecked(isChecked); checkBox6.setChecked(isChecked); break; } } StringBuffer sb=new StringBuffer(); for(String str:checkedStr){ sb.append(str+","); } if(sb.length()>0){ //设置长度为长度-1,去除最后的“,” sb.setLength(sb.length()-1); } textviewinfo.setText("已选择:"+sb.toString()); } }; }

写的不是很好,但是可以简单的解决问题,欢迎大家积极交流,留下宝贵的建议,共同学习!

转载于:https://www.cnblogs.com/dingxiansen/articles/6036757.html

Android开发CheckBox控件,全选,反选,取消全选相关推荐

  1. android开发重要控件,Android界面编程——Android基本控件

    Android界面编程 Android应用开发的一项重要内容就是界面开发.对于用户来说,不管APP包含的逻辑多么复杂,功能多么强大,如果没有提供友好的图形交互界面,将很难吸引最终用户. 作为一个程序员 ...

  2. 【按住你的心】——Android开发CheckBoxRadioButton控件的简单使用

    Android的控件很多,我们从最常用的一些控件学起,今天我们学习CheckBox和RadioButton. 首先,我们要在main.xml文件中添加控件: <?xml version=&quo ...

  3. Android开发--Spinner控件的使用

    我们经常会在Windows开发的过程中看到一个下拉菜单控件,在Android中也有相应的控件,它的名字叫Spinner,本文介绍Spinner的用法. 首先,下面的这张截图是实现的实例: 在第一行,你 ...

  4. Android开发-列表控件

    列表控件是Android中最常见的控件之一 由于手机屏幕空间都比较有限,能够一次性在屏幕上显示的内容并不多,当我们的程序中有大量的数据需要展示的时候,就可以借助各种列表控件来实现. <ListV ...

  5. Android:CheckBox控件

    1)ChexkBox继承自CompoundButton组件: 2)isChecked()--确定是否选中:setChecked(bool checked)--设置选中或取消选中: 3)监听事件:Com ...

  6. Android开发——RadioButton控件

    一,简介 RadioButton(单选按钮) 如题单选按钮,就是只能够选中一个,所以我们需要把RadioButton放到RadioGroup按钮组中,从而实现 单选功能!先熟悉下如何使用RadioBu ...

  7. Android开发-Spinner控件的使用,spinner设置默认选项

    1 简介: Spinner相当于下拉列表,每一个下拉项都可以供用户选择.Spinner可以是弹出对话框模式,也可以是当前页面显示. 2 效果图: 左图:android:spinnerMode=&quo ...

  8. Android游戏开发系统控件-CheckBox

    Android游戏开发系统控件-CheckBox 2012/5/11 星期五 CheckBox是Android系统最普通的UI控件,继承了Button按钮 下面通过一个实例来学习 作者:wwj 功能: ...

  9. android 全选功能,Android实现ListView控件的多选和全选功能实例

    本文实例讲述了Android实现ListView控件的多选和全选功能.分享给大家供大家参考,具体如下: 主程序代码 MainActivity.Java package yy.test; import ...

最新文章

  1. 聊聊恺明大神MAE的成功之处!
  2. 超越EfficientNet,GPU上加速5倍,何恺明组CVPR 2020论文提出新型网络设计范式
  3. R语言deLong‘s test:通过统计学的角度来比较两个ROC曲线、检验两个ROC曲线的差异是否具有统计显著性
  4. Jmeter 多台机器产生负载及问题解决方法
  5. Ubuntu自定义终端窗口位置
  6. android: 静态XML和动态加载XML混合使用,以及重写Layout控件
  7. 引入Jaeger——使用
  8. python删除列表一段元素_Python基础--list列表删除元素
  9. fast-planner 安装
  10. Atitit oodbms的查询,面向对象的sql查询jpa jpql hql
  11. 定罪了!“女版乔布斯”有可能入狱20年
  12. LCD显示屏加入百叶窗特效显示BMP图片
  13. arduino中u8g2汉字显示总结
  14. android入门之Activity 后台启动限制
  15. 概率论与统计的基础知识(概率空间、最基本的分布、数字特征)
  16. Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable Images
  17. window10 20H2安卓模拟器VT检测不到问题解决方法
  18. 高级程序设计语言的共性内容
  19. outlook gmail_将您的Gmail帐户添加到Outlook 2007
  20. C#GridView获取选中当前行

热门文章

  1. 解析VC++ Name Mangling 机制
  2. iPhone 11 Pro上手:亚光玻璃手感好,拍照真快
  3. 深度学习入门理解——零基础数学篇(一)
  4. 人工神经网络(一)概述
  5. 云计算大数据面试题,云计算大数据面试题集锦
  6. PLC程序实例一:MC协议定时进行网络触发
  7. 全国行政区划代码表-201907更新,三级数据
  8. 音视频SDK开发包涉及的技术要求
  9. QRadioButton 选中/取消选中
  10. 干货!如何用Python处理图像,一文带你了解!