如何取消选中radiogroup中的单选按钮并听取操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何取消选中radiogroup中的单选按钮并听取操作相关的知识,希望对你有一定的参考价值。
我有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;
}
}
});
}
答案
试试这段代码,希望它能帮到你..
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;
}
}
});
}
另一答案
似乎单选按钮不起作用,所以我用复选框替换它们并手动处理它们。它工作。
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();
}
}
});
另一答案
你应该有一个hideRedCards()
和hideBlueCard()
,hideGreenCards()
方法隐藏你的卡,当radioButton是unChecked时,调用这个方法
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();
}
}
});
}
以上是关于如何取消选中radiogroup中的单选按钮并听取操作的主要内容,如果未能解决你的问题,请参考以下文章