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; |
Il faut ensuite déclarer classiquement un HashMap mais de la façon suivante :
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>(); |
HashMap<String, Object> map; |
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
bmp = BitmapFactory.decodeByteArray(image, 0 ,image.length, null ); |
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
Aurélien