Afficher des images venant de SQlite ou d’une URL dans une listView

Un problème rencontré lors de mes différents développements à été d’afficher des images provenant d’un champs Blob(SQlite) dans une zone image d’une listView.

Pour se faire, il faut tout d’abord créer une classe que j’appellerai ici « MyViewBinder », en voici donc le code :

import android.graphics.Bitmap;
import android.view.View;
import android.widget.ImageView;
import android.widget.SimpleAdapter.ViewBinder;

public class MyViewBinder implements ViewBinder
{
	public boolean setViewValue(View view, Object data,String textRepresentation)
        {
		if( (view instanceof ImageView) & (data instanceof Bitmap) )
                {
			ImageView iv = (ImageView) view;
			Bitmap bm = (Bitmap) data;
			iv.setImageBitmap(bm);
			return true;
		}
		return false;
	}

}

Il faut ensuite déclarer classiquement un HashMap mais de la façon suivante :

ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>(); //Déclaration de l'ArrayList qui recevra la liste de HashMap
HashMap<String, Object> map; //Déclaration du HashMap
map = new HashMap<String, Object>();

Vous pouvez ensuite y insérer l’image stocker dans un Bitmap de la façon suivante :
Le tout devra donc être dans un boucle pour remplir les différentes case de la listView

image = c.getBlob(3);  //Récupération du Blob
bmp  = BitmapFactory.decodeByteArray(image,0,image.length, null); //Conversion en Bitmap
map.put("img",bmp); //Mettre l'image dans le HashMap
listItem.add(map); //Mettre chaque HashMap dans l'ArrayList

Et enfin, l’affichage de tout cela

SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(), listItem,R.layout.affichageitem,
new String[] {"img", "ville", "type","prix","id"}, new int[] {R.id.img, R.id.ville, R.id.type,R.id.prix,R.id.id});
mSchedule.setViewBinder(new MyViewBinder());
listView.setAdapter(mSchedule);

Bien sûr, ce fonctionne marche également très bien pour les images provenant d’URLs externe.

Source : http://www.developpez.net/forums/d1032626/java/general-java/java-mobiles/android/prendre-image-url-afficher-utilisant-listview/

Summary
Article Name
Afficher des images provenants d'une base SQLite dans une ListView
Author

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *