2010-01-25 17 views
5

Ich habe ein Spinner-Widget in meiner Aktivität, mit dem Benutzer einen Listennamen auswählen können.Wie Popup-Liste wie ein Spinner ohne Spinner in Android?

Normalerweise besteht die Funktion des Spinner darin, zwischen Listen zu wechseln, aber für einige Instanzen tausche ich den Listener für die Auswahländerung aus, um eine andere Funktion mit derselben Liste von Optionen auszuführen. Sobald die Auswahl getroffen wurde, wird der alte Hörer wiederhergestellt und das Leben geht weiter.

Dies ist eine schlechte und fehlerhafte Anordnung. Stattdessen möchte ich eine Funktion haben, die nur einen Auswahllistener und einige andere Parameter verwendet und eine Popup-Liste zeigt, die mit demselben Cursor (und identischem Cursor) wie der Spinner gefüllt ist, ohne den Spinner selbst zu verwenden.

Gibt es eine Möglichkeit, das kann ich tun?

Antwort

9

Verwenden Sie AlertDialog.Builder und liefern Sie eine Adapter über setAdapter(), die Ihre Zeilen generiert.

In Ihrem Fall würde ich die gleichen Cursor nicht verwenden, da ein Cursor eine innere Vorstellung der aktuellen Zeile hat und so mit den Cursor Messing, während es die Spinner von Ihrem SpinnerAdapter könnte vermasseln verwendet wird. Geh mit einem identischen Cursor. Diese

+0

Ich hatte keine Ahnung, eine AlertDialog.Builder diese Funktionalität hatte. Danke für den Tipp. Ich werde deine Antwort akzeptieren, wenn ich es zum Laufen bringe. – CodeFusionMobile

10

ist bestes Beispiel für Pop-up Details wie Spinner mit Alertdialog und AlertDialog.Builder

 AlertDialog dialog; 

     final CharSequence[] items = { "Item1", "Item2" }; 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle(title); 
     builder.setItems(items, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int pos) { 
      switch (pos) { 
       case 0: 
           { 
     Toast.makeText(this,"Clicked on:"+items[pos],Toast.LENGTH_SHORT).show(); 

         }break; 
      case 1: 
           { 
     Toast.makeText(this,"Clicked on:"+items[pos],Toast.LENGTH_SHORT).show(); 

         }break; 
     } 
    }}); 
dialog=builder.create(); 
dialog.show(); 
+0

genial! Genau das, was ich brauchte. – Jesse

3

Wenn Sie nicht durch API-Ebene begrenzt sind 11 dann ist listPopupWindow der Nähe zu dem, was Sie wollen.

+0

sollte dies unter den Antworten beliebter sein. – guness

1
  CharSequence[] items = {"Mangoes", "Bananas", "Grapes"}; 

      new AlertDialog.Builder(getActivity()) 
      .setTitle("Action") 
      .setItems(items, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int item) { 

        if(item==0){ 
         // Mangoes selected 
        } 
        else if(item==1){ 
         // Bananas selected 
        } 
        else if(item==2){ 
         // Grapes selected 
        } 
       } 

      }) 
      .show();