studio personalizado metodos example editar desplegable con columnas botones android listview android-listview imageview custom-adapter

android - metodos - ListView Adaptador personalizado que incluye Imágenes de galery



listview desplegable android studio (1)

Al crear un adaptador de ListView personalizado, generalmente lo extiendo desde Array Adapter<String> pero quiero hacer un ListView contenga fotos de la Galería del teléfono.

Me las arreglé para obtener el Bitmap de Bitmap de la galería en referencia a la imagen que el usuario eligió y ponerlo en un ImageView regular, pero realmente no sé cómo hacer un adaptador de un ListView muestra las fotos que el usuario elija. Las fotos son Bitmap , ¿alguna ayuda?


Haría esto exactamente como lo haría con una lista que contiene solo texto.

En primer lugar, es posible que desee crear una clase que represente un elemento de su lista (tal vez desee agregar algunos datos más, como una ID o un nombre), como:

class ItemInMyList { Bitmap image; String title; Integer id; }

Luego solo crea una nueva clase que amplíe ArrayAdapter:

public class MyAdapter extends ArrayAdapter<ItemInMyList> { private final Context context; private final List<ItemInMyList> values; private int layout; public MyAdapter(Context context, List<ItemInMyList> values, int layout) { super(context, layout, values); this.context = context; this.values = values; this.layout = layout; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); // When convertView is not null, we can reuse it directly, there is no need // to reinflate it. We only inflate a new View when the convertView supplied // by ListView is null. if (convertView == null) { convertView = inflater.inflate(layout, null); // Creates a ViewHolder and store references to the two children views // we want to bind data to. holder = new ViewHolder(); holder.name= (TextView) convertView.findViewById(R.id.name); holder.image = (ImageView) convertView.findViewById(R.id.image); // Bind the data efficiently with the holder. convertView.setTag(holder); } else { // Get the ViewHolder back to get fast access to the TextView // and the ImageView. holder = (ViewHolder) convertView.getTag(); } try { holder.text.setText(values.get(position).title); // Set your image to the ImageView in your list layout holder.image.setImageBitmap(values.get(position).image); } catch (NullPointerException e) { e.printStackTrace(); } return convertView; } static class ViewHolder { TextView name; ImageView image; } }

Ahora solo necesita crear un diseño que represente una fila en su ListView. En este ejemplo, probablemente agregaría una ImageView (imagen) y una TextView (nombre) a LinearLayout.

Luego, cuando instaure el adaptador, simplemente dele el diseño de la fila:

new MyAdapter(this, data, R.layout.rowlayout);

Eso es todo, básicamente.