android开发分享RadioButton实现选择后可取消选择

radiobutton是一种单选按钮,是由于radiogroup管理下的一组按钮,所以一旦其中的一个button选中,再点击,就不能取消,想要取消调用radiobutton

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。

以上就是android开发分享RadioButton实现选择后可取消选择的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/addevelopment/900510.html

(0)
上一篇 2021年10月23日
下一篇 2021年10月23日

精彩推荐