Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Iconos en un diálogo de lista

He estado buscando sobre ListDialogs. Siempre que usted puede poner el artículo que usted quiere con:

builder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { } }); 

Y pensando en el objeto items, que es un CharSequence como este:

 CharSequence[] items = getResources().getStringArray(R.array.share_dialog_list); 

Quiero saber si una manera (algún otro debe haber hecho: D) para hacer esto existe, pero con una vista personalizada con iconos a la izquierda, como este:

Introduzca aquí la descripción de la imagen

  • Cómo eliminar elementos de una lista con gesto de desplazamiento como en gmail
  • Convertir lista a matriz en Java
  • El clic de Listitem no funciona con las casillas de verificación Android
  • Vista de lista personalizada con el problema de la casilla de verificación
  • Android ListView CHOICE_MODE_MULTIPLE, cómo establecer el índice marcado?
  • Android: Obtención de la lista de aplicaciones del dispositivo - Muy lento
  • Kotlin: Cómo trabajar con Casts de listas: Desmarcado Cast: kotlin.collections.List <Kotlin.Any?> A kotlin.colletions.List <Waypoint>
  • Intenta invocar el método de interfaz 'boolean java.util.List.add (java.lang.Object)' en una referencia de objeto nulo
  • 2 Solutions collect form web for “Iconos en un diálogo de lista”

    Aquí hay una solución completa con un ArrayAdapter extendido que permite los iconos.

    Vea las notas de diseño para diálogos en http://developer.android.com/design/building-blocks/dialogs.html Iconogaphy en http://developer.android.com/design/style/iconography.html y IconPacks en http: /developer.android.com/design/downloads/index.html

    Tenga en cuenta que el tamaño de estos se ve bastante bien en 48 x 48 dp, que no es un tamaño de paquete, por lo que tendrá que escalar su propio icono de las descargas.

    USO :

      @Override public void onClick(View v) { final String [] items = new String[] {"From Gallery", "From Camera"}; final Integer[] icons = new Integer[] {R.drawable.dialog_gallery_icon, R.drawable.dialog_camera_icon}; ListAdapter adapter = new ArrayAdapterWithIcon(getActivity(), items, icons); new AlertDialog.Builder(getActivity()).setTitle("Select Image") .setAdapter(adapter, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item ) { Toast.makeText(getActivity(), "Item Selected: " + item, Toast.LENGTH_SHORT).show(); } }).show(); } 

    ArrayAdapterWithIcon.java

     public class ArrayAdapterWithIcon extends ArrayAdapter<String> { private List<Integer> images; public ArrayAdapterWithIcon(Context context, List<String> items, List<Integer> images) { super(context, android.R.layout.select_dialog_item, items); this.images = images; } public ArrayAdapterWithIcon(Context context, String[] items, Integer[] images) { super(context, android.R.layout.select_dialog_item, items); this.images = Arrays.asList(images); } public ArrayAdapterWithIcon(Context context, int items, int images) { super(context, android.R.layout.select_dialog_item, context.getResources().getTextArray(items)); final TypedArray imgs = context.getResources().obtainTypedArray(images); this.images = new ArrayList<Integer>() {{ for (int i = 0; i < imgs.length(); i++) {add(imgs.getResourceId(i, -1));} }}; // recycle the array imgs.recycle(); } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); TextView textView = (TextView) view.findViewById(android.R.id.text1); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { textView.setCompoundDrawablesRelativeWithIntrinsicBounds(images.get(position), 0, 0, 0); } else { textView.setCompoundDrawablesWithIntrinsicBounds(images.get(position), 0, 0, 0); } textView.setCompoundDrawablePadding( (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 12, getContext().getResources().getDisplayMetrics())); return view; } } 

    Crear la vista personalizada como creamos para la vista de lista

    Alert_customlist.xml

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:background="#ffffffff"> <ImageView android:layout_width="50dp" android:layout_height="50dp" android:textColor="#ffff0000" android:textSize="20dp" android:id="@+id/text1"/> <TextView android:text="text view two" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#ffff0000" android:textSize="20dp" android:id="@+id/text2"/> </LinearLayout> 

    Ahora agrega esta vista al objeto AlertDialog de esta manera

    Comprobar este post http://mgmblog.com/2010/06/10/arrayadapter-and-alertdialog-for-single-choice-items/

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.