RadioButton实现选择后可取消选择

作者:天兰之珠 时间:2023-10-15 23:50:39 

Radiobutton是一种单选按钮,是由于RadioGroup管理下的一组按钮,所以一旦其中的一个button选中,再点击,就不能取消,想要取消调用Radiobutton的setchecked(boolean isChecked)的方法。

在网上找了许多法,发现都实现不了在RadioGroup中选中Radiobutton后再次点击取消选中,于是自己查找资料后,最终得到了方法,和大家做个分享。

先看下结果展示:

RadioButton实现选择后可取消选择

本例子展示了2种方式来实现,

 一、第一种实现方式

一种是单个 Radiobutton进行逐个设置setOnClickListener方法,通过setChecked

改变选中和取消的状态,这种的问题在于如果有多个Radiobutton,相对而言就非常的耗时。不过我们可以先来看看它的具体实现。    


mRadioBtDhhs.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 setHcfs1(v, DHHS);
 }
});

mRadioBtJmhs.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 setHcfs1(v, JMHS);
 }
});

mRadioBtZppd.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 setHcfs1(v, ZPPD);
 }
});

setHcfs1方法:


private void setHcfs1(View view, String hcfs) {
if (hcfs.equals(mHsfs1)) {
 ((RadioButton) view).setChecked(false);
 mHsfs1 = "";
} else {
 mHsfs1 = hcfs;
 ((RadioButton) view).setChecked(true);
}
}

其中的mHsfs1参数是用来记录每次选中的值。

二、第二种实现方式

第二种采用的是RadioGroup.getChildAt(i)的方式设置所有Radiobutton的setOnClickListener方法。这样比较灵活,不管是有多少Radiobutton,也不需要额外的操作。

具体实现如下:


for (int i = 0; i < mRgHstj.getChildCount(); i++) {
 mRgHstj.getChildAt(i).setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
  switch (v.getId()) {
  // 电话核实
  case R.id.radioBt_dhhs:
   setHcfs(v, DHHS);
   break;
  // 见面核实
  case R.id.radioBt_jmhs:
   setHcfs(v, JMHS);
   break;
  // 照片判断
  case R.id.radioBt_zppd:
   setHcfs(v, ZPPD);
   break;
  }
 }
 });
}

其中mRgHstj是RadioGroup。


setHcfs方法的实现:
private void setHcfs(View view, String hcfs) {
if (hcfs.equals(mHsfs)) {
 mRgHstj.clearCheck();
 mHsfs = "";
} else {
 mHsfs = hcfs;
 mRgHstj.check(view.getId());
}

}

这里用到了RadioGroup.clearCheck()方法,通过取消所有RadioButton的选中状态达到取消选择的效果。为什么这边的实现不采用mHsfs1这个方法呢。经过测试得知在RadioGroup进行循环设置时 RadioButton.setChecked这个方法起不到改变选中状态的效果。采用RadioGroup..check(view.getId())方法进行这种选中。

到此就ok了,基本的核心代码都已经给出来了,如果愿意下载的,具体的代码可以看demo。

来源:https://blog.csdn.net/u012693479/article/details/97894368

标签:RadioButton,选择
0
投稿

猜你喜欢

  • springboot2.x只需两步快速整合log4j2的方法

    2023-06-06 20:41:21
  • 不知道面试会不会问Lambda怎么用(推荐)

    2021-07-27 21:37:30
  • MybatisPlus多表连接查询的问题及解决方案

    2023-11-25 22:09:06
  • hadoop是什么语言

    2021-06-18 07:02:38
  • Android4.4 WebAPI实现拍照上传功能

    2023-08-17 00:46:21
  • SpringBoot配置GlobalExceptionHandler全局异常处理器案例

    2023-06-11 12:14:36
  • Java实现聊天室界面

    2023-12-15 10:43:32
  • Netty与NIO超详细讲解

    2022-08-16 00:44:37
  • c#集合快速排序类实现代码分享

    2023-03-30 13:38:51
  • 详解直接插入排序算法与相关的Java版代码实现

    2022-06-13 09:06:38
  • java身份证合法性校验并提取身份证有效信息

    2023-04-18 17:26:18
  • 使用@符号让C#中的保留字做变量名的方法详解

    2022-06-07 20:22:48
  • 基于java实现租车管理系统

    2022-02-08 12:48:49
  • C#如何让winform程序中的输入文本框保留上次的输入

    2022-12-29 12:54:00
  • 基于Mybatis Plus实现代码生成器CodeGenerator

    2021-09-28 12:18:21
  • springboot 返回json格式数据时间格式配置方式

    2023-12-17 23:27:10
  • Android自定义wheelview实现滚动日期选择器

    2021-11-22 16:04:19
  • C#使用NPOI上传excel

    2022-05-20 14:46:22
  • Spring Boot如何通过自定义注解实现日志打印详解

    2022-07-04 14:10:18
  • Android简单的利用MediaRecorder进行录音的实例代码

    2023-04-24 03:52:57
  • asp之家 软件编程 m.aspxhome.com