2010-01-25 23 views
5

Nella mia attività ho un widget spinner che consente agli utenti di selezionare un nome di elenco.Come visualizzare un elenco popup come uno spinner senza spinner in Android?

Normalmente, la funzione della casella di selezione è quella di passare da una lista all'altra, ma per un paio di istanze, sostituisco l'elenco di selezione delle modifiche per eseguire una funzione diversa con lo stesso elenco di opzioni. Una volta effettuata la selezione, il vecchio ascoltatore viene ripristinato e la vita va avanti.

Questo è un accordo cattivo e con errori. Invece, mi piacerebbe avere una funzione che richiede solo un listener di selezione e alcuni altri parametri e mostra un elenco popup popolato dallo stesso cursore (o cursore identico) della filatrice, senza utilizzare lo spinner stesso.

C'è un modo per farlo?

risposta

9

Utilizzare AlertDialog.Builder e fornire un Adapter tramite setAdapter() che genera le righe.

Nel tuo caso, non vorrei utilizzare lo stesso Cursor, come Cursor ha una nozione intrinseca della riga corrente, e quindi scherzi con il Cursor mentre è utilizzato dal SpinnerAdapter potrebbero rovinare il Spinner. Vai con un identico Cursor.

+0

Non avevo idea di un AlertDialog.Builder aveva tale funzionalità. Grazie per il consiglio. Accetterò la tua risposta se riuscirò a risolverlo. – CodeFusionMobile

10

Questo è il miglior esempio per i dettagli popup come filatore utilizzando AlertDialog e 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

fantastico! Proprio quello di cui avevo bisogno. – Jesse

3

Se non si è limitato dal livello di API 11 poi listPopupWindow è vicino a quello che si vuole.

+0

questo dovrebbe essere più popolare tra le risposte. – 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(); 
1

Si potrebbe desiderare di utilizzare PopupMenu

vedere this esempio

Problemi correlati