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参数是⽤来记录每次选中的值。
⼆、第⼆种实现⽅式
第⼆种采⽤的是ChildAt(i)的⽅式设置所有Radiobutton的setOnClickListener⽅法。这样⽐较灵活,不管是有多少Radiobutton,也不需要额外的操作。
具体实现如下:
for (int i = 0; i < ChildCount(); i++) {
@Override
public void onClick(View v) {
switch (v.getId()) {
// 电话核实
case R.id.radioBt_dhhs:
setHcfs(v, DHHS);
break;
// 见⾯核实
case R.id.radioBt_jmhs:
htmlradio设置默认的按钮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.Id());
}
}
这⾥⽤到了RadioGroup.clearCheck()⽅法,通过取消所有RadioButton的选中状态达到取消选择的效果。为什么这边的实现不采⽤mHsfs1这个⽅法呢。经过测试得知在RadioGroup进⾏循环设置时 RadioButton.setChecked这个⽅法起不到改变选中状态的效果。采⽤Id())⽅法进⾏这种选中。
到此就ok了,基本的核⼼代码都已经给出来了,如果愿意下载的,具体的代码可以看。
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。