RadioButton实现选择后可取消选择

这篇文章主要为大家详细介绍了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是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

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

以上就是RadioButton实现选择后可取消选择的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 移动