У меня есть вращающийся элемент управления, позволяющий моему пользователю выбирать радиостанцию, но (из-за ограниченного пространства экрана) я также пытаюсь использовать тот же элемент управления для отключения / включения звука и выключения.Я хочу изменить форматирование выбранной станции, когда пользователь выбирает MUTE (а также повтор MUTE на UNMUTE) и возвращает его к нормальному состоянию, когда он выбирает UNMUTE или снова выбирает станцию.
Моя проблема в том, что, если я выбираю MUTE, хотя я могу переформатировать текст, чтобы показать приглушенную станцию, элемент управления вращением думает, что выбранный индекс соответствует записи MUTE / UNMUTE, и поэтому выбор UNMUTE незапустить событие, потому что, кажется, не было изменений.Как поймать выделение UNMUTE?
private RadioArrayAdapter adapter;
private CharSequence mSelectedFrequency = "Radio 4";
private SceneFragmentListener mListener;
public interface SceneFragmentListener{
void onRadioSet(StringSetting);
}
//Spinner populated when the fragment is set up in onCreateView()
spnRadio.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
TextView t = (TextView) view;
String s = t.getText();
if ("OFF".equals(s)) {
adapter.setSelection(position); //This just causes the selected item to be highlighted
t.setTextColor(getResources().getColor(R.color.colorRadioOff));
t.setPaintFlags(t.getPaintFlags()&(~Paint.STRIKE_THRU_TEXT_FLAG));
mSelectedFrequency = "OFF";
mListener.onRadioSet("OFF");
} else if "MUTE".equals(s) {
t.setText(mSelectedFrequency);
t.setTextColor(getResources().getColor(R.color.colorRadioMute));
t.setPaintFlags(t.getPaintFlags()|Paint.STRIKE_THRU_TEXT_FLAG);
mRadioFreqs.set(0,"UNMUTE");
mListener.onRadioSet("MUTE");
} else if "UNMUTE".equals(s) {
t.setText(mSelectedFrequency);
t.setTextColor(getResources().getColor(R.color.colorRadioOn));
t.setPaintFlags(t.getPaintFlags()&(~Paint.STRIKE_THRU_TEXT_FLAG));
mRadioFreqs.set(0,"MUTE");
mListener.onRadioSet("UNMUTE");
} else {
adapter.setSelection(position);
t.setTextColor(getResources().getColor(R.color.colorRadioOn));
t.setPaintFlags(t.getPaintFlags()&(~Paint.STRIKE_THRU_TEXT_FLAG));
mSelectedFrequency = s;
mListener.onRadioSet(s);
}
}
}
Я попытался вставить булевский блокатор и рекурсивно вызвать onItemSelected () внутри mute и включить звук, если блоки, но мне кажется, что выбор фактически не сделан, покамой код завершен, так что это не имеет никакого эффекта.
Спасибо за поиск ...