2010-03-07 24 views
26

Estoy usando un ListView en un AlertDialog para mostrar una lista de elementos. Cuando el usuario hace clic en uno de los elementos, quiero que se cierre el cuadro de diálogo. No tendría ningún botón de acción en el diálogo. ¿Alguna idea sobre cómo lograr esto?ListView en AlertDialog

+0

También puede ver esta muestra de diálogo de alerta con la vista de lista ir aquí [por ejemplo demo] (http://goo.gl/W3a4h) – Herry

Respuesta

92

Usted debe ser capaz de hacer algo como:

final CharSequence[] items = {"Foo", "Bar", "Baz"}; 

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setTitle("Make your selection"); 
builder.setItems(items, new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int item) { 
     // Do something with the selection 
    } 
}); 
AlertDialog alert = builder.create(); 
alert.show(); 

Este page tiene algunos otros ejemplos de diferentes tipos de cuadros de diálogo.

+5

simplemente ponga dismiss() en el vacío público La función onClick() cerrará el diálogo por usted. – Yenchi

+0

Ahorre mi día, gracias ... – Cabezas

0

Puede usar un diseño al abrir un cuadro de diálogo de alerta. Es más fácil diseñarlo de esa manera imo. Para la lista de diálogo de alerta que puede hacer algo como this

0

Se utiliza a continuación código para mostrar la lista personalizada en AlertDialog

AlertDialog.Builder builderSingle = new AlertDialog.Builder(
        DialogActivity.this); 
      builderSingle.setIcon(R.drawable.ic_launcher); 
      builderSingle.setTitle("Select One Name:-"); 
      final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
        DialogActivity.this, 
        android.R.layout.select_dialog_singlechoice); 
      arrayAdapter.add("Hardik"); 
      arrayAdapter.add("Archit"); 
      arrayAdapter.add("Jignesh"); 
      arrayAdapter.add("Umang"); 
      arrayAdapter.add("Gatti"); 
      builderSingle.setNegativeButton("cancel", 
        new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.dismiss(); 
         } 
        }); 

      builderSingle.setAdapter(arrayAdapter, 
        new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          String strName = arrayAdapter.getItem(which); 
          AlertDialog.Builder builderInner = new AlertDialog.Builder(
            DialogActivity.this); 
          builderInner.setMessage(strName); 
          builderInner.setTitle("Your Selected Item is"); 
          builderInner.setPositiveButton("Ok", 
            new DialogInterface.OnClickListener() { 

             @Override 
             public void onClick(
               DialogInterface dialog, 
               int which) { 
              dialog.dismiss(); 
             } 
            }); 
          builderInner.show(); 
         } 
        }); 
      builderSingle.create(); 
      builderSingle.show(); 
Cuestiones relacionadas