2011-12-22 17 views
8

que estoy tratando de hacer un cuadro de diálogo con un selector que se ve exactamente como esto:AlertDialog con selector de

AlertDialog with selector

He intentado usar un AlertDialog que mantiene un ListView, pero que le da un borde negro feo entre ListView y el área gris inferior. Podría usar un cuadro de diálogo normal, pero no quiero construir manualmente el área gris inferior.

Sé que puedo crear una subclase AlertDialog, pero también necesitaré una subclase del Creador y terminará siendo un montón de código para un detalle tan pequeño. ¿Hay alguna buena manera de hacer esto?

Saludos,

Respuesta

28

Utilice el constructor de diálogo de alerta, que tiene opciones para ello. ejemplo corto:

AlertDialog.Builder adb = new AlertDialog.Builder(this); 
CharSequence items[] = new CharSequence[] {"First", "Second", "Third"}; 
adb.setSingleChoiceItems(items, 0, new OnClickListener() { 

     @Override 
     public void onClick(DialogInterface d, int n) { 
      // ... 
     } 

}); 
adb.setNegativeButton("Cancel", null); 
adb.setTitle("Which one?"); 
adb.show(); 

Véase el dialogs doc, sección Adición de una lista.

+2

sugiero que haga que la misma familia adb.setSingleChoiceItems (artículos, -1, nuevo DialogInterface.OnClickListener() –

+0

@AbdulazizNoor ¿Por qué? – Jaec

+0

@Jaec realmente no recuerdo por qué loooool –

2

Debe utilizar el siguiente código para seleccionar un solo elemento. Este código está trabajando

CharSequence colors[] = new CharSequence[]{"View PDF", "Reduce Size", "Delete PDF", "Share PDF"}; 

      AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
      builder.setTitle("Select Option"); 
      builder.setItems(colors, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        Log.e("value is", "" + which); 
        switch (which) { 
         case 0: 
          break; 
         case 1: 
          break; 
         case 2: 
          break; 
         case 3: 
          break; 
        } 
       } 
      }); 
      builder.show(); 
Cuestiones relacionadas