2012-06-25 7 views
7
ausgewählt ist

Ich habe einen Spinner mit onItemSelected interation, das funktioniert, aber wie die API-Spezifikation sagt:Android: Spinner Artikel auf klicken does't Arbeit, wenn es bereits

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

Ich brauche diese Einschränkung zu entfernen und Ich möchte, dass der Callback auch aufgerufen wird, wenn der Benutzer das selbe Element auswählt. Wie geht das?
Hat jemand das Gleiche gemacht?

Jede Idee, über diese nennenswerte ..

+0

versuche ich mit setOnItemClickListener –

+0

Ich bin auch auf der Suche nach dem gleichen .... – Sri

+0

Mögliche Duplikate von [Wie bekomme ich ein Ereignis in Android Spinner, wenn das aktuelle ausgewählte Element wieder ausgewählt ist?] (Http://stackoverflow.com/ Fragen/5335306/how-can-i-get-an-ev ent-in-android-spinner-wenn-die-aktuelle-selected-artikel-ist-sele) – stefan222

Antwort

1

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

einstellen OnItemClickListener für einen Spinner eine Ausnahme und verwendet, wird werfen ItemSelectedListener Sie nicht, wenn der Benutzer klicken Sie auf das ausgewählte/gleiche Element mitgeteilt werden würde .

Ich nehme an, die einzige Möglichkeit, diese Einschränkung zu überwinden, ist die Verwendung eines CustomAdapter für die Spinner-Elemente und implementieren Sie die setOnClickListener für jede Ansicht im Adapter.

+0

danke für die antwort arun..will es versuchen .. – Hulk

1

Ich hatte das gleiche Problem und sah mich ein wenig um. Es gibt möglicherweise mehrere Möglichkeiten, diese Funktionalität zum Funktionieren zu bringen, aber Erweiterung der Spinner arbeitete für mich. Sie könnten etwas tun, was dem ähnlich ist, was ich gefunden habe here.

Anstatt den standardmäßigen Android-Spinner zu verwenden, erweitern Sie ihn und fügen Sie Code hinzu, der Ihre Callback-Methode auslöst.

möchte ich hinzufügen, dass die setOnItemClickListener auf einem Spinner verwendet, wird eine Ausnahme ausgelöst, wie in der Dokumentation angegeben:

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

In diesem Fall, dass Sie eine benutzerdefinierte Spinner machen müssen: Versuchen Sie, diese

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