2012-06-25 8 views
7

ho uno Spinner con interation onItemSelected che funziona, ma come la specifica Api dice:Android: Spinner elemento click does't lavoro se è già selezionata

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

Ho bisogno di rimuovere questa limitazione e voglio che il callback sia invocato anche se l'utente seleziona lo stesso elemento. Come farlo?
Qualcuno ha fatto la stessa cosa?

qualche idea su questo sarebbe apprezzabile ..

+0

provare con setOnItemClickListener –

+0

Sto anche cercando lo stesso .... – Sri

+0

Possibile duplicato di [Come posso ottenere un evento in Android Spinner quando l'elemento selezionato in corso viene selezionato di nuovo?] (Http://stackoverflow.com/ domande/5335306/come-can-i-get-un-ev ent-in-android-spinner-when-the-current-selected-item-is-sele) – stefan222

risposta

1

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

Impostazione del OnItemClickListener per uno Spinner un'eccezione e utilizzando ItemSelectedListener non verrà comunicato se l'utente clicca sullo stesso elemento/selezionato .

Suppongo che l'unico modo per superare questa limitazione sia utilizzare un CustomAdapter per gli oggetti Spinner e implementare lo setOnClickListener per ogni vista nell'adattatore.

+0

grazie per la risposta arun..will provarlo .. – Hulk

1

Ho avuto lo stesso problema e ho cercato un po '. Potrebbero esserci diversi modi per far funzionare questa funzionalità, ma l'estensione per lo spinner ha funzionato per me. Potresti fare qualcosa di simile a quello che ho trovato here.

Quindi, invece di utilizzare il filatore Android predefinito, estenderlo e aggiungere un codice ad esso che attiverà il metodo di callback.

vorrei aggiungere che utilizzando il setOnItemClickListener su uno Spinner un'eccezione come indicato nella documentazione:

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

In questo caso si deve fare un filatore personalizzato: Prova questa

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; 
} 
}