2012-06-25 5 views
7

У меня есть Spinner с onItemSelected Интерактивного, который работает, но как спецификация Api говорит:Android: Spinner элемент по щелчку does't работу, если он уже выбран

This callback is invoked only when the newly selected position is different from the 
previously selected position or if there was no selected item. 

Мне нужно, чтобы удалить это ограничение и Я хочу, чтобы вызов вызывался также, если пользователь выбирает один и тот же элемент. Как это сделать?
Кто-нибудь сделал то же самое?

Любая идея об этом будет заметна ..

+0

попробуйте с setOnItemClickListener –

+0

Я также ищу то же самое .... – Sri

+0

Возможный дубликат [Как я могу получить событие в Android Spinner, когда выбранный выбранный элемент снова выбран?] (Http://stackoverflow.com/ вопросы/5335306/как-кан-я-получить-ан-ев ent-in-android-spinner-when-the-current-selected-item-is-sele) – stefan222

ответ

1

i want that the callback is invoked also if the user select the same element. How to do that?

Установка OnItemClickListener для Spinner сгенерирует исключение и использование ItemSelectedListener вы не будете уведомлены, если пользователь нажмет на выбранном/же элемента ,

Я полагаю, что единственным способом преодоления этого ограничения является использование CustomAdapter для элементов Spinner и реализация setOnClickListener для каждого вида в адаптере.

+0

спасибо, что ответили arun .. попробуем ... – Hulk

1

У меня была такая же проблема и немного огляделся. Могут быть несколько способов заставить эту функциональность работать, но , расширяющий счетчик, работал для меня. Вы могли бы сделать что-то похожее на то, что я нашел here.

Поэтому вместо использования развертки Android по умолчанию расширьте его и добавьте в него некоторый код, который вызовет ваш метод обратного вызова.

Я хотел бы добавить, что с помощью setOnItemClickListener на Spinner сгенерирует исключение, как указано в документации:

A spinner does not support item click events. Calling this method will raise an exception. 
0

В этом случае вы должны сделать пользовательский кок: Попробуйте

public class MySpinner extends Spinner{ 

OnItemSelectedListener listener; 

public MySpinner(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
} 

@Override 
public void setSelection(int position) 
{ 
    super.setSelection(position); 

    if (position == getSelectedItemPosition()) 
    { 
     listener.onItemSelected(null, null, position, 0); 
    }  
} 

public void setOnItemSelectedListener(OnItemSelectedListener listener) 
{ 
    this.listener = listener; 
} 
}