Как установить значения для радиокнопки в Android?

Я получаю значение из БД и устанавливаю его на соответствующую кнопку в формате ниже. Есть ли оптимизированный способ сделать то же самое. Все эти переключатели находятся внутри группы переключателей.

if (bundlevalue.get(3).equalsIgnoreCase("Mr.")) {
 rg_nametitle.check(R.id.mr);
} else if (bundlevalue.get(3).equalsIgnoreCase("Mrs.")) {
rg_nametitle.check(R.id.mrs);
} else if (bundlevalue.get(3).equalsIgnoreCase("Ms.")) {
rg_nametitle.check(R.id.ms);
} else {
rg_nametitle.check(R.id.messrs);
}

person Manju    schedule 03.04.2014    source источник
comment
Вы можете использовать оператор switch-case со строковым регистром, если вы используете java 1.7.   -  person The Holy Coder    schedule 03.04.2014


Ответы (3)


Можно попробовать следующим образом...

String value = bundlevalue.get(3)
Resources res = getResources();

if (value.equalsIgnoreCase("Mr.") || value.equalsIgnoreCase("Mrs.") || value.equalsIgnoreCase("Ms.")) {

    String[] splitedValue = value.toLowerCase ().split(".");
    int id = res.getIdentifier(splitedValue[0], "id", getContext().getPackageName());
    rg_nametitle.check(id);

} else {

    rg_nametitle.check(R.id.messrs);

}
person Hamid Shatu    schedule 03.04.2014
comment
Я получаю эту ошибку. Метод getIdentifier(String, String, String) в типе Resources неприменим для аргументов (String[], String, String) - person Manju; 04.04.2014
comment
Я обновил свой ответ. Извините за неудобства. - person Hamid Shatu; 07.04.2014

В случае, если вы используете атрибут XML следующим образом:

<RadioGroup
...
...
android:checkedButton="@+id/IdOfTheRadioButtonInsideThatTobeChecked"
... >....</RadioGroup>

или вы можете использовать оператор switch-case следующим образом:

public void onRadioButtonClicked(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();

    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.radio_pirates:
            if (checked)
                // Pirates are the best
            break;
        case R.id.radio_ninjas:
            if (checked)
                // Ninjas rule
            break;
    }
}
person Harshit Rathi    schedule 03.04.2014

Используйте оператор switch. Хотя нет большой разницы в использовании if-else или switch, вы можете использовать то, что вам удобнее для чтения.

public enum Title
 {
     Mr, Mrs, Ms;
 }

String title = bundlevalue.get(3).equalsIgnoreCase("Mr.");

switch(Title.valueOf(title)) {
    case Mr:
        rg_nametitle.check(R.id.mr);
        break;
    case Ms:
        rg_nametitle.check(R.id.ms);
        break;
    case Mrs:
        rg_nametitle.check(R.id.mrs);
        break;
    default:
        break;
}
person Joel Fernandes    schedule 03.04.2014