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

在网上找了许多法,发现都实现不了在RadioGroup中选中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。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持Devmax。

RadioButton实现选择后可取消选择的更多相关文章

  1. Android单选按钮RadioButton的使用详解

    今天小编就为大家分享一篇关于Android单选按钮RadioButton的使用详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

  2. Android图片或拍照选择图片功能实例代码

    这篇文章主要给大家介绍了关于Android图片或拍照选择图片功能的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

  3. RadioButton实现选择后可取消选择

    这篇文章主要为大家详细介绍了RadioButton实现选择后可取消选择,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  4. 微信小程序实现选择内容显示对应内容

    这篇文章主要为大家详细介绍了微信小程序实现选择内容显示对应内容,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. JQuery导航菜单选择特效

    这篇文章主要介绍了JQuery导航菜单选择特效 的相关资料,需要的朋友可以参考下

  6. Android实现多级树形选择列表

    这篇文章主要为大家详细介绍了Android实现多级树形选择列表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  7. Android单选按钮RadioButton的使用方法

    这篇文章主要为大家详细介绍了Android单选按钮RadioButton的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  8. python使用tkinter模块实现文件选择功能

    这篇文章主要介绍了python使用tkinter模块实现文件选择功能,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

  9. Android复选框CheckBox与开关按钮Switch及单选按钮RadioButton使用示例详解

    这篇文章主要介绍了Android复选框CheckBox与开关按钮Switch及单选按钮RadioButton使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  10. DatePicker日期滚动选择使用详解

    这篇文章主要为大家详细介绍了DatePicker日期滚动选择的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

随机推荐

  1. Flutter 网络请求框架封装详解

    这篇文章主要介绍了Flutter 网络请求框架封装详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. Android单选按钮RadioButton的使用详解

    今天小编就为大家分享一篇关于Android单选按钮RadioButton的使用详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

  3. 解决android studio 打包发现generate signed apk 消失不见问题

    这篇文章主要介绍了解决android studio 打包发现generate signed apk 消失不见问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

  4. Android 实现自定义圆形listview功能的实例代码

    这篇文章主要介绍了Android 实现自定义圆形listview功能的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  5. 详解Android studio 动态fragment的用法

    这篇文章主要介绍了Android studio 动态fragment的用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. Android用RecyclerView实现图标拖拽排序以及增删管理

    这篇文章主要介绍了Android用RecyclerView实现图标拖拽排序以及增删管理的方法,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下

  7. Android notifyDataSetChanged() 动态更新ListView案例详解

    这篇文章主要介绍了Android notifyDataSetChanged() 动态更新ListView案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

  8. Android自定义View实现弹幕效果

    这篇文章主要为大家详细介绍了Android自定义View实现弹幕效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  9. Android自定义View实现跟随手指移动

    这篇文章主要为大家详细介绍了Android自定义View实现跟随手指移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. Android实现多点触摸操作

    这篇文章主要介绍了Android实现多点触摸操作,实现图片的放大、缩小和旋转等处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部