Настройка переключателя нажмите слушателей


У вас есть какие-либо предложения по его улучшению? Вместо того, чтобы писать четыре практически идентичных setOnClickListener вызовы метода, я решил перебрать массив, но я интересно, если это лучший способ, чтобы сделать это.

/* Set up the radio button click listeners so two categories are not selected
   at the same time. When one of them is clicked it clears the others.
*/
final RadioButton[] buttons = {radio_books,radio_games,radio_dvds,radio_electronics};
for (int i = 0; i < 4; i++) {
    final int k = i;
    buttons[i].setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            for (int j = 0; j < 4; j++) {
                if (buttons[j] != buttons[k]) {
                    buttons[j].setChecked(false);
                }
            }
        }
    });
}


906
11
задан 6 февраля 2011 в 03:02 Источник Поделиться
Комментарии
2 ответа

Какие рамки Гуй это? Такое мнение в передаче функция onclick метод на самом деле нажата радиокнопка? Если это так, вот некоторые изменения, чтобы рассмотреть

final RadioButton[] buttons = {radio_books,radio_games,radio_dvds,radio_electronics};

final OnClickListener onClickHandler =
new OnClickListener() {
@Override
public void onClick(final View v) {
final RadioButton checkedButton = (RadioButton) v;
for (final RadioButton button : buttons) {
if (button != checkedButton) {
button.setChecked(false);
}
}
}
};

for (final RadioButton button : buttons) {
button.setOnClickListener(onClickHandler);
}

Если смотреть V != проверил переключатель, затем:

final RadioButton[] buttons = {radio_books,radio_games,radio_dvds,radio_electronics};
for (final RadioButton thisButton: buttons) {
thisButton.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(final View v) {
for (final RadioButton button : buttons) {
if (button != thisButton) {
button.setChecked(false);
}
}
}
}
);
}

6
ответ дан 6 февраля 2011 в 06:02 Источник Поделиться

Это типичный метод обратного вызова, вы просто определенными setOnClickListener раз. Звоню 4 раза это не плохой запах.

2
ответ дан 6 февраля 2011 в 03:02 Источник Поделиться