Android Spinner OnItemSelectedListener не работает точно

Я создал Spinner и активировал слушателя:

customerListSpinner.setOnItemSelectedListener(new OnItemSelectedListener(){
    public void onItemSelected(AdapterView<?> adapter, View view, int position, long id) {
        // I do some work here
    }
    public void onNothingSelected(AdapterView<?> arg0) {
        isInitRadioGroup = false;
    }
 );

Я изначально добавил в Spinner три значения: «Поиск», «Сотрудник», «Компания». Если пользователь выбирает «Поиск», отображается новый ListActivity, и в результате выбранное значение добавляется к указанному выше счетчику.
Таким образом, я выполняю некоторые действия при выборе элемента счетчика. Теперь, когда экран отображается в первый раз, по умолчанию отображается «Поиск». Чтобы запустить обработку ListActivity, пользователь должен снова выбрать «Поиск». На этот раз для ItemSelected обратный вызов не вызывается. Я имею в виду, что если значение в Spinner уже выбрано, то при повторном выборе того же значения слушатель не срабатывает.

Принимая во внимание: Когда экран отображается в первый раз, по умолчанию отображается «Поиск». Пользователь выбирает значение «Сотрудник» (обработка для этого выполняется, onItemSelected вызывается, поскольку предыдущее выбранное значение отличается от значения, выбранного пользователем). Затем пользователь выбирает значение «Поиск». На этот раз вызывается метод onItemSelected, который успешно добавляет новое значение в Spinner.

Это баг андроида. Я проверил, что в моем коде нет ошибок.


person Khushboo    schedule 22.07.2011    source источник


Ответы (1)


Попробуйте использовать счетчик следующим образом

Spinner genspin=(Spinner)findViewById(R.id.gender);

ArrayAdapter<String> genadap=new ArrayAdapter(this,R.layout.spinneritems,String_array);
genadap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
genspin.setAdapter(genadap);
genspin.setOnItemSelectedListener(this);

то вы можете получить выбранное значение как

genspin.getSelectedItem().toString()
person surendra    schedule 22.07.2011
comment
Сурендра, нет проблем с получением выбранного значения счетчика. Что я хочу, так это то, что когда клиент меняет значение счетчика (или повторно выбирает то же значение), тогда необходимо выполнить какое-то действие. Для этого, когда пользователь выбирает значение, отличное от того, которое было выбрано, вызывается onItemSelected, но когда пользователь повторно выбирает то же значение (например, Search), onItemSelected не вызывается. Я не могу вручную заставить обратный вызов срабатывать. - person Khushboo; 25.07.2011