[英]How to uncheck a radio button in radiogroup and listen to the action
我有 3 個自定義單選按鈕,默認情況下不選中它們。 它們就像一個過濾器。 我想知道是否有辦法取消選中已選中的按鈕並收聽該操作。 所以基本上我可以取消過濾器。
我知道在這種情況下我應該使用checkbox
,但我不希望檢查多個!!
RadioGroup radioGroup;
RadioButton radioYellow;
RadioButton radioGreen;
RadioButton radioRed;
boolean isChecked;
void handleRadioButtons(){
radioRed.setChecked(false);
radioGreen.setChecked(false);
radioYellow.setChecked(false);
showAllCards();
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// RadioButton rad = group.findViewById(checkedId);
Log.i("isChecked: ", isChecked + "");
//I want to call showAllCards() when no button is checked
switch (checkedId) {
case R.id.radioRed:
showRedCards();
break;
case R.id.radioGreen:
showGreenCards();
break;
case R.id.radioYellow:
showYellowCards();
break;
}
}
});
}
單選按鈕似乎不起作用,所以我用復選框替換了它們並手動處理它們。 它奏效了。!
greenCheckBox.setChecked(false);
yellowCheckBox.setChecked(false);
redCheckBox.setChecked(false);
showAllCards();
greenCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton button, boolean isChecked) {
if (isChecked){
yellowCheckBox.setChecked(false);
redCheckBox.setChecked(false);
showGreenCards();
}else {
showAllCards();
}
}
});
yellowCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton button, boolean isChecked) {
if (isChecked){
greenCheckBox.setChecked(false);
redCheckBox.setChecked(false);
showYellowCards();
}else {
showAllCards();
}
}
});
redCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton button, boolean isChecked) {
if (isChecked){
yellowCheckBox.setChecked(false);
greenCheckBox.setChecked(false);
showRedCards();
}else {
showAllCards();
}
}
});
試試這個代碼,希望它會幫助你..
RadioGroup radioGroup;
RadioButton radioYellow;
RadioButton radioGreen;
RadioButton radioRed;
boolean isChecked;
void handleRadioButtons(){
radioRed.setChecked(false);
radioGreen.setChecked(false);
radioYellow.setChecked(false);
showAllCards();
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// RadioButton rad = group.findViewById(checkedId);
Log.i("isChecked: ", isChecked + "");
//I want to call showAllCards() when no button is checked
switch (checkedId) {
case R.id.radioRed:
// check if it is checked or not...
if(radioRed.isChecked())
radioRed.setChecked(false);
else
radioRed.setChecked(true);
// showRedCards();
break;
case R.id.radioGreen:
if(radioGreen.isChecked())
radioGreen.setChecked(false);
else
radioGreen.setChecked(true);
//showGreenCards();
break;
case R.id.radioYellow:
if(radioYellow.isChecked())
radioYellow.setChecked(false);
else
radioYellow.setChecked(true);
//showYellowCards();
break;
}
}
});
}
你應該有一個hideRedCards()
和hideBlueCard()
, hideGreenCards()
方法來隱藏你的卡片,當 radioButton 沒有被選中時,調用這個方法
void handleRadioButtons() {
radioRed.setChecked(false);
radioGreen.setChecked(false);
radioYellow.setChecked(false);
// showAllCards();
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// RadioButton rad = group.findViewById(checkedId);
Log.i("isChecked: ", isChecked + "");
if (radioRed.isChecked()) {
radioRed.setChecked(true);
showRedCards();
} else{
radioRed.setChecked(false);
HideRedCards();
}
if (radioGreen.isChecked()) {
radioGreen.setChecked(true);
showGreenCards();
} else{
radioGreen.setChecked(false);
HideGreenCards();
}
if (radioYellow.isChecked()) {
radioYellow.setChecked(true);
showYellowCards();
} else{
radioYellow.setChecked(false);
HideYellowCards();
}
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.