¿Cómo puedo mostrar una vista de lista en un cuadro de diálogo de alerta de Android?

En una aplicación de Android, quiero mostrar una vista de lista personalizada en un AlertDialog.

¿Cómo puedo hacer esto?

8 Solutions collect form web for “¿Cómo puedo mostrar una vista de lista en un cuadro de diálogo de alerta de Android?”

Utilizado debajo del 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.show(); 

Puede utilizar un diálogo personalizado.

Diseño de diálogo personalizado. list.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ListView android:id="@+id/lv" android:layout_width="wrap_content" android:layout_height="fill_parent"/> </LinearLayout> 

En tu actividad

 Dialog dialog = new Dialog(Activity.this); dialog.setContentView(R.layout.list) ListView lv = (ListView ) dialog.findViewById(R.id.lv); dialog.setCancelable(true); dialog.setTitle("ListView"); dialog.show(); 

Editar:

Utilización de alertdialog

 String names[] ={"A","B","C","D"}; AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this); LayoutInflater inflater = getLayoutInflater(); View convertView = (View) inflater.inflate(R.layout.custom, null); alertDialog.setView(convertView); alertDialog.setTitle("List"); ListView lv = (ListView) convertView.findViewById(R.id.listView1); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,names); lv.setAdapter(adapter); alertDialog.show(); 

Custom.xml

 <?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/listView1" android:layout_width="fill_parent" android:layout_height="fill_parent" > </ListView> 

Chasquido

Introduzca aquí la descripción de la imagen

 final CharSequence[] items = {"A", "B", "C"}; 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 mDoneButton.setText(items[item]); } }); AlertDialog alert = builder.create(); alert.show(); 

Según la documentación , hay tres tipos de listas que se pueden utilizar con un AlertDialog :

  1. Lista tradicional de una sola opción
  2. Lista persistente de una sola opción (botones de opción)
  3. Lista de opciones múltiples persistentes (casillas de verificación)

Voy a dar un ejemplo de cada uno a continuación.

Lista tradicional de una sola opción

La forma de hacer una lista tradicional de una sola opción es usar setItems .

Introduzca aquí la descripción de la imagen

 // setup the alert builder AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("Choose an animal"); // add a list String[] animals = {"horse", "cow", "camel", "sheep", "goat"}; builder.setItems(animals, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: // horse case 1: // cow case 2: // camel case 3: // sheep case 4: // goat } } }); // create and show the alert dialog AlertDialog dialog = builder.create(); dialog.show(); 

No es necesario un botón Aceptar porque tan pronto como el usuario hace clic en un control de elemento de lista se devuelve al OnClickListener .

Lista de botones de radio

Introduzca aquí la descripción de la imagen

La ventaja de la lista de botones de radio sobre la lista tradicional es que el usuario puede ver cuál es la configuración actual. La forma de crear una lista de botones de radio es usar setSingleChoiceItems .

 // setup the alert builder AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("Choose an animal"); // add a radio button list String[] animals = {"horse", "cow", "camel", "sheep", "goat"}; int checkedItem = 1; // cow builder.setSingleChoiceItems(animals, checkedItem, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // user checked an item } }); // add OK and Cancel buttons builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // user clicked OK } }); builder.setNegativeButton("Cancel", null); // create and show the alert dialog AlertDialog dialog = builder.create(); dialog.show(); 

He codificado el elemento elegido aquí, pero usted podría seguirlo con una variable del miembro de la clase en un proyecto verdadero.

Lista de casillas de verificación

Introduzca aquí la descripción de la imagen

La forma de hacer una lista de checkbox es usar setMultiChoiceItems .

 // setup the alert builder AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("Choose some animals"); // add a checkbox list String[] animals = {"horse", "cow", "camel", "sheep", "goat"}; boolean[] checkedItems = {true, false, false, true, false}; builder.setMultiChoiceItems(animals, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { // user checked or unchecked a box } }); // add OK and Cancel buttons builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // user clicked OK } }); builder.setNegativeButton("Cancel", null); // create and show the alert dialog AlertDialog dialog = builder.create(); dialog.show(); 

Aquí he codificado el que los elementos de la lista ya estaban marcados. Es más probable que desee realizar un seguimiento de ellos en un ArrayList<Integer> . Consulte el ejemplo de la documentación para obtener más detalles. También puede establecer los elementos marcados como null si siempre desea que todo empiece sin marcar.

Notas

  • También puede rellenar los elementos de lista de una base de datos u otra fuente mediante setAdapter o setCursor o pasar un Cursor o ListAdapter a setSingleChoiceItems o setMultiChoiceItems .
  • Si la lista es más larga de lo que cabrá en la pantalla, entonces el diálogo lo desplazará automáticamente. Si tienes una lista muy larga, sin embargo, supongo que probablemente deberías crear un diálogo personalizado con RecyclerView .
  • Para probar todos los ejemplos anteriores he tenido un proyecto simple con un solo botón que mostró el diálogo cuando se hace clic:

     import android.support.v7.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context = this; } public void showAlertDialogButtonClicked(View view) { // example code to create alert dialog lists goes here } } 

Relacionado

  • Diálogo de alerta de Android con uno, dos y tres botones

Utiliza la import android.app.AlertDialog; " import android.app.AlertDialog; " y luego escribes

  String[] items = {"...","...."}; AlertDialog.Builder build = new AlertDialog.Builder(context); build.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //do stuff.... } }).create().show(); 

Como un principiante te sugiero que vayas a través de http://www.mkyong.com/android/android-custom-dialog-example/

Voy a desglosar lo que básicamente hace

  1. Crea un archivo XML para el diálogo y la actividad principal
  2. En la actividad principal en el lugar requerido se crea un objeto de la clase android Dialog
  3. Agrega estilo personalizado y texto basado en el archivo XML
  4. Llama al método dialog.show() .

Esto es demasiado simple

 final CharSequence[] items = {"Take Photo", "Choose from Library", "Cancel"}; AlertDialog.Builder builder = new AlertDialog.Builder(MyProfile.this); builder.setTitle("Add Photo!"); builder.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int item) { if (items[item].equals("Take Photo")) { getCapturesProfilePicFromCamera(); } else if (items[item].equals("Choose from Library")) { getProfilePicFromGallery(); } else if (items[item].equals("Cancel")) { dialog.dismiss(); } } }); builder.show(); 

¿No es más suave hacer un método para ser llamado después de la creación de la unidad EditText en un AlertDialog, para uso general?

 public static void EditTextListPicker(final Activity activity, final EditText EditTextItem, final String SelectTitle, final String[] SelectList) { EditTextItem.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle(SelectTitle); builder.setItems(SelectList, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogInterface, int item) { EditTextItem.setText(SelectList[item]); } }); builder.create().show(); return false; } }); } 
  • AlertDialog dentro de onClickListener
  • ¿Puedo cerrar un cuadro de diálogo de alerta en la lista?
  • ¿Cómo hacer clic en 'Aceptar' en un AlertDialog a través de código?
  • Mostrar diálogo de alerta en onProviderDisabled en android LocationListener
  • Cómo mostrar MessageBox en Monodroid
  • Cómo crear un diálogo de alerta con una ruleta
  • Copiar texto de Android AlertDialog?
  • Diferencia entre obj.create () vs obj.show () vs obj.create (). Show () de AlertDialog.builder.
  • ListView personalizado para AlertDialog
  • Aplicar imagen de fondo a AlertDilog
  • Mostrar alerta de diálogo de una clase que no sea de actividad en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.