Cómo personalizar los elementos de la lista en un AlertDialog de Android

Quiero mostrar varias líneas con diferentes estilos de texto para cada elemento de una lista utilizando AlertDialog, pero no puede finalizar ningún ejemplo.

¿Alguien sabe cómo personalizar los elementos de un AlertDialog? ¿O realmente tengo que crear una actividad con un ListView para esto?

Utilice setAdapter() en AlertDialog.Builder para suministrar su propio ListAdapter personalizado para su lista.

Vea ESTE LINK para una implementación de la idea anterior.

Editar: por cierto, he hecho algunos cambios para mostrar realmente diferentes iconos:

list_item.xml :

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/icon" android:contentDescription="@string/icon_descr" android:layout_width="48dp" android:layout_height="48dp" android:layout_gravity="left" /> <TextView android:id="@+id/title" android:text="" android:paddingLeft="10dip" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

Y en su Actividad:

 // dialog list entries final String[] items = { getString(R.string.entry_0), getString(R.string.entry_1), getString(R.string.entry_2) }; // dialog list icons: some examples here final int[] icons = { android.R.drawable.ic_menu_edit, android.R.drawable.ic_menu_send, android.R.drawable.ic_menu_delete }; ListAdapter adapter = new ArrayAdapter<String>( getApplicationContext(), R.layout.list_item, items) { ViewHolder holder; class ViewHolder { ImageView icon; TextView title; } public View getView(int position, View convertView, ViewGroup parent) { final LayoutInflater inflater = (LayoutInflater) getApplicationContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (convertView == null) { convertView = inflater.inflate( R.layout.list_item, null); holder = new ViewHolder(); holder.icon = (ImageView) convertView .findViewById(R.id.icon); holder.title = (TextView) convertView .findViewById(R.id.title); convertView.setTag(holder); } else { // view already defined, retrieve view holder holder = (ViewHolder) convertView.getTag(); } holder.title.setText(items[position]); holder.icon.setImageResource(icons[position]); return convertView; } }; // ---------- AlertDialog.Builder builder = new AlertDialog.Builder(myActivity.this); builder.setTitle("title"); builder.setAdapter(adapter, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // --- } }); builder.create(); if (! ((Activity) myActivity.this).isFinishing()) { builder.show(); } 
  • ¿Cómo implementar la vista de pila personalizada en android?
  • Personalizar diálogo de acción rápida para android
  • ¿Cómo hacer double seekbar en android?
  • Personalización del spinner de Actionbar
  • ¿Cómo crear un ListView cerrado (circular)?
  • Cambiar el color del cursor editext en API 12
  • Android: Crear un botón de alternancia con imagen y sin texto
  • ¿Cómo puedo cambiar el código predeterminado de la pantalla de inicio de Android y reemplazar mi código fuente de aplicación de la pantalla de inicio personalizada?
  • ¿Por qué los estilos de corte personalizado aparecen en gris en lugar del color especificado?
  • ActionBar superposición con GridView relleno o personalizado GridView para mostrar toda la primera imagen?
  • Personalización de la funcionalidad de la pantalla de bloqueo de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.