RadioButton實現(xiàn)選擇后可取消選擇
Radiobutton是一種單選按鈕,是由于RadioGroup管理下的一組按鈕,所以一旦其中的一個button選中,再點擊,就不能取消,想要取消調(diào)用Radiobutton的setchecked(boolean isChecked)的方法。
在網(wǎng)上找了許多法,發(fā)現(xiàn)都實現(xiàn)不了在RadioGroup中選中Radiobutton后再次點擊取消選中,于是自己查找資料后,最終得到了方法,和大家做個分享。
先看下結(jié)果展示:

本例子展示了2種方式來實現(xiàn),
一、第一種實現(xiàn)方式
一種是單個 Radiobutton進行逐個設(shè)置setOnClickListener方法,通過setChecked
改變選中和取消的狀態(tài),這種的問題在于如果有多個Radiobutton,相對而言就非常的耗時。不過我們可以先來看看它的具體實現(xiàn)。
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參數(shù)是用來記錄每次選中的值。
二、第二種實現(xiàn)方式
第二種采用的是RadioGroup.getChildAt(i)的方式設(shè)置所有Radiobutton的setOnClickListener方法。這樣比較靈活,不管是有多少Radiobutton,也不需要額外的操作。
具體實現(xiàn)如下:
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方法的實現(xiàn):
private void setHcfs(View view, String hcfs) {
if (hcfs.equals(mHsfs)) {
mRgHstj.clearCheck();
mHsfs = "";
} else {
mHsfs = hcfs;
mRgHstj.check(view.getId());
}
}
這里用到了RadioGroup.clearCheck()方法,通過取消所有RadioButton的選中狀態(tài)達到取消選擇的效果。為什么這邊的實現(xiàn)不采用mHsfs1這個方法呢。經(jīng)過測試得知在RadioGroup進行循環(huán)設(shè)置時 RadioButton.setChecked這個方法起不到改變選中狀態(tài)的效果。采用RadioGroup..check(view.getId())方法進行這種選中。
到此就ok了,基本的核心代碼都已經(jīng)給出來了,如果愿意下載的,具體的代碼可以看demo。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android統(tǒng)一依賴管理的三種方式總結(jié)
為了項目的管理,依賴包的紡一管理是必要的,下面這篇文章主要給大家介紹了關(guān)于Android統(tǒng)一依賴管理的三種方式,文中通過實例代碼和圖文介紹的非常詳細,需要的朋友可以參考下2022-01-01
Android 通知使用權(quán)(NotificationListenerService)的使用
這篇文章主要介紹了Android 通知使用權(quán)(NotificationListenerService)的使用的相關(guān)資料,需要的朋友可以參考下2017-06-06
詳解Android studio 動態(tài)fragment的用法
這篇文章主要介紹了Android studio 動態(tài)fragment的用法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
Android之禁止ViewPager滑動實現(xiàn)實例
這篇文章主要介紹了Android之禁止ViewPager滑動實現(xiàn)實例的相關(guān)資料,需要的朋友可以參考下2017-05-05

