ListView con imagenes mias – android listview

Pregunta:


Tengo 10 imágenes y quiero ponerlas con ListView. Si fuera una activity, ya estaría hecho pues lo hice en una aplicación, pero ahora son Fragment.

    String[] menuItems = { "Do some","kkk",",,,,,","Do some","kkk",",,,,,","Do some","kkk",",,,,,","Do some","kkk",",,,,,","Do some","kkk",",,,,,"};


    ListView listView = (ListView) v.findViewById(R.id.mymenu);

    ArrayAdapter<String> listViewAdapter = new ArrayAdapter<String> (getActivity(),android.R.layout.simple_list_item_1,menuItems);

    listView.setAdapter(listViewAdapter);


    return v;

En vez de String[] sería poner algo tipo Drawable o similar para que me dejara cargar las fotos mediante R.drawable.photo1, R.drawable.photo2 . Sustituir la linea de texto, pero no sé cómo, o ¿cómo lo tendría que hacer ?

Preguntado por: Rf Mvs

Jorgesys

Todos los recursos en tu proyecto, estan definidos por valores tipo entero los cuales puedes ver dentro de tu archivo R.java.

Si los valores son enteros, procede a crear un valor tipo entero conteniendo la referencia de tus imagenes contenidas en sl folder /drawable:

int[] imagenes = {R.drawable.photo1, R.drawable.photo2, R.drawable.photo3 ...};

De esta forma puedes obtener un Drawable del recurso y agregarlo a un ImageView dentro de los elementos en tus ListView, esto se realiza generalmente en el adapter dentro del método getView(), tomando la variable position como indice para acceder a la imagen correspondiente:

//Asigna el Drawable al ImageView.
imageView.setImageDrawable(imagenes[position]);

Para esto necesitas crear un customadapter. Como ejemplo puedes usar el comentado en este articulo que tiene un ejemplo completo.

Ejemplos:

introducir la descripción de la imagen aquí

Deberias de crear un adapter para cargar las imagenes ya que por defecto las ListView solo pueden cargar texto.

Puedes hacerlo creando una vista en res/layout/ con el nombre de listview_img.xml. A esta vista solo le definimos un ImageView:

<ImageView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="100dp" />

Ahora en tu activity, solo tendrias que crear un array con los recursor e implementar el adapter:

// obtenemos el listview 
ListView listView = (ListView) findViewById(R.id.listview);

// definimos las imagenes que cargara el listview
final int[] resources = {R.drawable.screenshot, R.drawable.cloud_outline_icon_8, R.drawable.screenshot, R.drawable.cloud_outline_icon_8};

// le asignamos el adapter que se encargara de cargar la vista de la imagen y asignarle el id del recurso al ImageView
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_2) {

        @Override
        public int getCount() {
            return resources.length; // le indicamos la cantidad de elementos que va a cargar
        }

        @NonNull
        @Override
        public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {

            if(convertView == null)
            {
                // cargamos la vista 
                convertView = ((LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.listview_item, parent, false);
            }

            // como la vista es un ImageView lo convertimos y le asignamos el id del recurso
            ((ImageView)convertView).setImageDrawable( ActivityCompat.getDrawable( MainActivity.this, resources[position]));


            return convertView; // retornamos la vista
        }
});

Este seria el resultado:

introducir la descripción de la imagen aquí

Fuente

Add a Comment

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