Если вы используете radiogroup в xml, то
Вы можете обработать событие click только в xml
<?xml version="1.0" encoding="utf-8"?>
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton android:id="@+id/radio_pirates"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pirates"
android:onClick="onRadioButtonClicked"/>
<RadioButton android:id="@+id/radio_ninjas"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ninjas"
android:onClick="onRadioButtonClicked"/>
</RadioGroup>
и в вашей actvity (в которой размещен макет) обработайте нажатие кнопки мыши следующим образом:
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;
}
}
Как вы видите, он принимает идентификаторы, которые вы упомянули в макете.
Теперь становится легко.
Предупреждение:
1. тип возврата метода должен быть void.
имя метода должно совпадать с указанным в xml.
И он должен иметь представление параметров класса View.
Что касается эффективности, вы просто устанавливаете тот же объект ClickListener. так что это эффективно.
Исходные документы для Android