时间:2021-05-20
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。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
飞猪酒店不可取消订单,买家无法单方面取消,可以打电话给酒店协商看能不能解决。若行程不确定,建议下单时选择可取消的订单。 飞猪,指为淘宝会员提供机票、酒店、旅游
唯品会取消订单的方法是: 1、登录会员账户进入个人中心,点击订单管理,选择取消订单; 2、选择取消订单的原因即可取消,订单取消后商品库存自动释放。 唯品会
ps智能对象取消方法如下: 1、打开要取消的文件,点击进入智能对象图层; 2、点击鼠标右键,在弹出的界面选择“栅格化图层”,即可取消智能对象。 Adobe
有以下两种方式启用警告框的可取消(dismissal)功能:1、通过data属性:通过数据API(DataAPI)添加可取消功能,只需要向关闭按钮添加data-
定义和用法clearTimeout()方法可取消由setTimeout()方法设置的timeout。语法clearTimeout(id_of_settimeou