Другой вариант в духе решения Билла Моте - сделать OnItemSelectedListener
также OnTouchListener
.Затем флаг взаимодействия с пользователем может быть установлен в true в методе onTouch и сброшен в onItemSelected()
после обработки изменения выбора.Я предпочитаю это решение, потому что флаг взаимодействия с пользователем обрабатывается исключительно для счетчика, а не для других представлений в действии, которые могут повлиять на желаемое поведение.
В коде:
Создайте слушателя для счетчика:
public class SpinnerInteractionListener implements AdapterView.OnItemSelectedListener, View.OnTouchListener {
boolean userSelect = false;
@Override
public boolean onTouch(View v, MotionEvent event) {
userSelect = true;
return false;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
if (userSelect) {
// Your selection handling code here
userSelect = false;
}
}
}
Добавьте слушателя к счетчику как OnItemSelectedListener
и OnTouchListener
:
SpinnerInteractionListener listener = new SpinnerInteractionListener();
mSpinnerView.setOnTouchListener(listener);
mSpinnerView.setOnItemSelectedListener(listener);