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?
- Personalizar la lista de sugerencias de AutoCompletar vista de texto
- Osmdroid. OnItemSingleTapUp no funciona para Drawable personalizado
- Cambiar color de texto y selector en TabWidget
- Android: evita el truncamiento de texto en las sugerencias de SearchView?
- Cómo personalizar cardview?
- Cambiar el color de texto de ListView al hacer clic
- Cambiar la fuente PreferenceFragment a través de fuentes de activos
- Título personalizado de ActionBar como ImaveView en lugar de TextView
- Android ListView con encabezado y pie de página fijos
- Android ActionBar Personalizar Buscar Ver
- Android Listview Custom Sección Encabezado
- ScrollBar en un listView ... personalizándolo.
- Uso de Textview personalizado en estilo
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(); }