У меня есть набор кнопок:
[Button1]
[Button2]
[Button3]
[Button4]
[Button5]
[Button6]
Все они используют один и тот же метод onClick:
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Button b = (Button) v;
Button comp;
int i = b.getId();
selected[i] = !selected[i];
b.setSelected(selected[i]);
for (int j = 0; j < 6; j++) {
if (i != j) {
selected[j] = false;
comp = lifestyleButtonArray.get(j);
if(comp.isSelected())
comp.setSelected(selected[j]);
Log.w(TAG,"[Button] selection for button #"+j+"="+selected[j]);
}
}
}
});
Первая часть метода onClick работает как положено. При нажатии кнопки переключите значение «выбор» кнопок, чтобы изменить цвет кнопки (определенный в файле XML для рисования), а затем отмените выбор всех других кнопок, чтобы не более одной кнопки было помечено «выбранной» в время.
Часть выбора работает, но кнопки не перерисованы соответствующим цветом, поэтому кажется, что выбраны две кнопки!
Я пытался сделать недействительными и requestLayout, но это не помогло. Есть предложения?
РЕДАКТИРОВАТЬ: После этой мысли еще раз, реальный вопрос, который следует задать здесь:
Как мне обновить представление, которое не является видом из метода onClick?
В моем примере, когда я выбираю button1, я хочу иметь возможность удалить выборку с кнопок 2-6, но, поскольку кнопки 2-6 не являются вызываемым видом, они показывают правильное выбранное значение (что они не выбраны) ), но не обновляйте их вид пользовательского интерфейса до «не выбранного» цвета!