Saltar al contenido

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

Esta es la contestación más completa que encomtrarás aportar, sin embargo mírala pausadamente y analiza si se puede adaptar a tu trabajo.

Solución:

Usar setAdapter() sobre AlertDialog.Builder para suministrar su propia costumbre ListAdapter para tu lista.

editar: por cierto, hice algunos cambios para mostrar diferentes íconos:

list_item.xml:



    

    


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(
    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();

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *