У меня есть набор кнопок:Android: установка множественного выбора кнопки OnClick
[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, но это не помогло. Какие-либо предложения?
EDIT: Дав это еще некоторые мысли, вопрос нужно задать здесь:
Как обновить представление, которое не вид из метода OnClick?
В моем примере, когда я выбираю button1, я хочу, чтобы убрать выделение с кнопок 2-6, но так как кнопки 2-6 не являются вызываемым видом, они показывают правильное выбранное значение (что они unselected), но не обновляют свой пользовательский интерфейс до «не выбранного» цвета!
Почему вы не позволяете своей деятельности реализовывать onClickListener, а затем переопределяете один метод onClick (View v) для всех ваших кнопок, а затем вы можете переключаться между ними с помощью Switch (v.getId() {case R.id.btn1 : //TODO....break; case R.id.btn2: .... и т. Д. – Houcine
Потому что это все внутри большей активности, которая реализует свой собственный метод onClick, чтобы позаботиться о другой части кода. нужно иметь возможность переключаться между кнопками, хотя мне нужно уметь устанавливать значение выбора для кнопки и повторно рисовать. –