Как насчет этого другого решения, чтобы сохранить хороший переключатель вместо if-else:
private enum LayoutElement {
NONE(-1),
PLAY_BUTTON(R.id.playbtn),
STOP_BUTTON(R.id.stopbtn),
MENU_BUTTON(R.id.btnmenu);
private static class _ {
static SparseArray<LayoutElement> elements = new SparseArray<LayoutElement>();
}
LayoutElement(int id) {
_.elements.put(id, this);
}
public static LayoutElement from(View view) {
return _.elements.get(view.getId(), NONE);
}
}
Итак, в вашем коде вы можете сделать это:
public void onClick(View src) {
switch(LayoutElement.from(src)) {
case PLAY_BUTTTON:
checkwificonnection();
break;
case STOP_BUTTON:
Log.d(TAG, "onClick: stopping srvice");
Playbutton.setImageResource(R.drawable.playbtn1);
Playbutton.setVisibility(0); //visible
Stopbutton.setVisibility(4); //invisible
stopService(new Intent(RakistaRadio.this,myservice.class));
clearstatusbar();
timer.cancel();
Title.setText(" ");
Artist.setText(" ");
break;
case MENU_BUTTON:
openOptionsMenu();
break;
}
}
Перечисления являются статическими, поэтому это будет иметь очень ограниченное влияние. Единственное окно для беспокойства - это двойной поиск (сначала во внутреннем массиве SparseArray, а затем в таблице переключателей)
Тем не менее, это перечисление также может быть использовано для быстрого извлечения элементов, если необходимо, сохраняя ссылку на идентификатор ... но это история для другого времени.