Simple Caché de imágenes en Android --- Scroll Very Slow in Android ListView

Un problema común cuando trabajais con listview u otro tipo de contenidos en el desarrollo de aplicaciones para Android es el de la carga y descarga de imágenes, es decir, el manejo de memoria caché para que así vuestra aplicación funcione de manera fluida. Aunque existen varias propuestas en la web, como Universal Image Loader o Web Image View, con ninguna de estas propuestas obtuve un rendimiento como el del proyecto LazyList (by: thest1) que presentaré a continuación.

 

Pues bien, hace algún tiempo se me presentó ese problema en el desarrollo de un proyecto y a continuación os presento una solución útil y rápida para ese problema, de antemano agradezco al autor del proyecto LazyList por haber facilitado la mayoría de las clases y funcionalidades que si bien no sé cómo se llama (el autor de ese proyecto), me ha sido de mucha ayuda para la solución que buscaba.

 

Paso 1: Descarga la librería.

Este es el link de donde yo descargué el código base sobre el cual me basé para solucionar mi problema de la carga y descarga de imagenes: Proyecto LazyList

 

Descargais el proyecto, descomprimen y copias la carpeta  lazylist que se encuentra en: C:\...\LazyList-master\src\com\fedorvlasov y la pegais dentro de vuestro proyecto, en mi caso, he creado una carpeta llamada “lib” que es donde guardaré todas las clases y folders auxiliares para el desarrollo de mi aplicación, en mi caso, la carpeta lazylist la renombré como: “CacheImages”

 

NOTA: en la carpeta “main” es donde tengo guardada mi main activity.

 

Como vereis, he borrado 2 archivos de la carpeta original del proyecto lazylist que han sido la activity y el adapter que el autor original a modo de ejemplo había creado dentro de la carpeta, si quereis podeis dejarlas para que os mireis y entendais el funcionamiento de las clases, si quereis y para ahorraros cualquier problema podeis eliminarlos, los archivos se llaman: MainActivity y LazyAdapter.

 

Paso 2: Importaciones

A continuación debeis importar los archivos a sus activities (sólo si es necesario) y adapters (obligatorio para poder usar las clases), en caso de que ya tengáis alguna clase en tu proyecto con alguno de los nombres de las clases del proyecto lazylist, os recomiendo que os unais estos archivos y dejeis un solo archivo para que de este modo no os vayáis a confundir.

 

 

Paso 3: Edita tu adaptador

En n vuestro adaptador debéis declarar un objeto global de la clase ImageLoader y en el constructor no olvidéis inicializarlo.

Sólo importamos la clase ImageLoader - myAdapter.java

 

 

Paso 4: Asignar la imagen a tu ImageView

Finalmente debeis asignar la imagen a vuestro imageview, si estais usando la clase Holder para inflar vuestro listview, que es lo que normalmente se hace, pues no vais a tener ningún problema. Con el objeto imageView que creamos en el paso anterior simplemente le asignais al ImageView la imagen correspondiente a través del método DisplayImage que ya está implementado en la clase ImageLoader.

El método DisplayImage recibe como parámetros la url de la imagen y la referencia del ImageView.

myAdapter.java



No olvideis de dar permisos a vuestra aplicación para que funcione bien, esto se hace en nuestro archivo Manifiest.

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Espero os sea de ayuda este pequeño post, saludos a todos!

 

Att: Wárrdnez

 

 

 

Aquí os dejo la licencia del código original del proyecto LazyList y su autor: Licencia

 

Thanks again to thest1 for the base code.

 

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.