2010-01-25 17 views
5

Tengo un widget giratorio en mi actividad que permite a los usuarios elegir un nombre de lista.¿Cómo hacer una lista emergente como un spinner sin spinner en Android?

Normalmente, la función de la ruleta es cambiar de una lista a otra, pero por un par de instancias, cambio la escucha de cambio de selección para realizar una función diferente con la misma lista de opciones. Una vez que se ha hecho la selección, el viejo oyente se restaura y la vida continúa.

Esta es una mala disposición y con errores. En cambio, me gustaría tener una función que solo tome un oyente de selección y algunos otros parámetros y muestre una lista emergente que esté poblada por el mismo cursor (o un cursor idéntico) que el girador, sin usar el ruteador mismo.

¿Hay alguna manera de que pueda hacer esto?

Respuesta

9

Utilice AlertDialog.Builder y suministre Adapter a través de setAdapter() que genera sus filas.

En su caso, yo no usaría el mismo Cursor, como Cursor tiene una noción intrínseca de la fila actual, y así jugar con el Cursor mientras que es utilizado por el SpinnerAdapter podría arruinar la Spinner. Vaya con un Cursor idéntico.

+0

no tenía idea de un AlertDialog.Builder tenía esa funcionalidad. Gracias por el consejo. Aceptaré tu respuesta si logro que funcione. – CodeFusionMobile

10

Este es el mejor ejemplo para los detalles emergentes como spinner utilizando AlertDialog y 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

¡increíble! Justo lo que necesitaba. – Jesse

3

Si usted no está limitado por el nivel de API de 11 a continuación listPopupWindow está cerca de lo que desea.

+0

esto debería ser más popular entre las respuestas. – 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(); 
Cuestiones relacionadas