@AlexRudkowskij предложил в принципе рабочее решение, но не очень красивое с точки зрения ООП и паттернов проектирования. Осмелюсь предложить другой вариант. Для каждого цвета реализуем несколько полей, реализующих View.OnClickListener. При этом в обработчике каждого меняем сначала цвет кнопки на нужный, а потом прописывает кнопки следующий класс-слушателя. Ну, а при старте Activity назначаем один из слушателей.
redButtonListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
myButton.setBackgroud(R.drawable.green);
myButton.setOnClickListener(greenButtonListener);
// выполняем дополнительные действия
}
}
greenButtonListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
myButton.setBackgroud(R.drawable.red);
myButton.setOnClickListener(redButtonListener);
// выполняем дополнительные действия
}
}
Таким образом достигаем:
1. Понятности в коде. Не надо в голове держать какой индекс за какой цвет должен отвечать. Код самодокументированный.
2. Легко вносить правки при добавлении новых цветов.
3. Каждый обработчик нажатий в отдельном месте, а не в лапше if или swith