RadioButton实现选择后可取消选择

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。

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

(0)

相关推荐

  • javascript判断是否有对RadioButtonList选项选择

    写Javascript来判断是否有对RadioButtonList选项选择,效果如下: 准备好RadioButtonList数据源: Cosmetic.vb 复制代码 代码如下: Imports Microsoft.VisualBasic Namespace Insus.NET Public Class Cosmetic Private _ID As Integer Private _Type As String Private _Name As String Private _Weight A

  • RadioButton实现选择后可取消选择

    Radiobutton是一种单选按钮,是由于RadioGroup管理下的一组按钮,所以一旦其中的一个button选中,再点击,就不能取消,想要取消调用Radiobutton的setchecked(boolean isChecked)的方法. 在网上找了许多法,发现都实现不了在RadioGroup中选中Radiobutton后再次点击取消选中,于是自己查找资料后,最终得到了方法,和大家做个分享. 先看下结果展示: 本例子展示了2种方式来实现, 一.第一种实现方式 一种是单个 Radiobutton

  • C#中的FileUpload 选择后的预览效果具体实现

    C#中的FileUpload 选择后的预览效果 实现方法: HTML: 复制代码 代码如下: <asp:FileUpload ID="fupTmpPic" runat="server" onchange="onFileChange(this);" /> <asp:Image ID="imgDimensionalPic" runat="server" /> JS: 复制代码 代码如下:

  • jQuery实现复选框成对选择及对应取消的方法

    本文实例讲述了jQuery实现复选框成对选择及对应取消的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/

  • javascript 全选/反选,取消选择效果

    其实这个效果不难做. 难做的是 如何让用户使用起来方便. 第一个checkbox实现了 全选 反选 最后个checkbox实现了 取消选择 这里只是做一个 JS实例罢了. 这段HTML并没有 实际的价值. javascript 全选/反选效果. 标题 时间 我们 2010-02-02 我们 2010-02-02 我们 2010-02-02 我们 2010-02-02     var $=function(id){return document.getElementById(id);}; var

  • jQuery实现按钮只点击一次后就取消点击事件绑定的方法

    本文实例讲述了jQuery实现按钮只点击一次后就取消点击事件绑定的方法.分享给大家供大家参考.具体实现方法如下: <input type="button" id="my-selector" value="只能点击一次" /> <script> $('#my-selector').bind('click', function() { $(this).unbind('click'); alert('Clicked and un

  • CheckBox为CheckBoxList实现全选或全取消选择(js代码实现)

    某一个时候,CheckBoxList的选择太多,用户需要一个全选或全取消的功能.下面使用Javascript来实现它. 准备好一个对象: MusicType 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// Summary description for MusicType /// </summary> n

  • jquery取消选择select下拉框示例代码

    有三个select下拉框一个大类,两个小类隐藏,需要在选择大类的时候,小类显示同时清除另外的小类选择的项这需求有点儿.......... 下面是三个select: 复制代码 代码如下: <select name="pWaqqqy" id="sel_type" onchange="selectFunction()">        <option value="">全部</option>   

  • jquery实现tab键进行选择后enter键触发click行为

    这种使用场景为当首页有几个链接需要选择的时候,使用键盘就可以进行触发行为 复制下来放本地用吧 网页上直接测试有问题 效果图: 下面是demo代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>9</title> <script type="text/javascript" sr

  • javascript 单选按钮 单击选中 双击取消选择实现代码

    单选按钮,双击取消选中 window.onload = function() { // setRadio("myDiv", "form1", "alreadySelected"); var radios = document.getElementsByTagName("input"); for (var i = 0; i A: B: C: D: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  • 选择与取消选择不错的应用 js

    无标题文档 html,body,table,td,div{ font-size:12px;} .ybScontainer{ margin:0 auto; padding:15px; border:1px solid #CCCCCC;width:510px;} .TitleDiv{margin:3px 0px 0px 0px;} .leftTitle{ background:#993300; color:#FFFFFF; font-weight:bold; border:1px solid #99

随机推荐