Mettre une image dans les items de ListView en utilisant SimpleCursorAdapter et ViewBinder
Bonjour,
J'ai un petit souci que je n'arrive pas à régler depuis un long moment malgré toutes mes recherches donc je viens demander votre aide.
J'ai dans ma base de données des personnes qui ont chacune un nom , un prénom et l'id correspondant à la ressource d'une image associé déjà présente dans les drawable. Bref, en clair je fais une listView qui est initialisé à partir de cette base donc qui affiche l'image, le nom et le prénom de chaque personnes.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public void dataBind() {
Cursor cursor = personne.selectionner();
this.startManagingCursor(cursor);
SimpleCursorAdapter adapter = new SimpleCursorAdapter (this,
R.layout.cursor_personne, cursor, new String[]{PersonneDAO.NOM,
PersonneDAO.IMAGE,PersonneDAO.PRENOM
}, new int[]{R.id.nom,R.id.icon,R.id.prenoml});
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
// TODO Auto-generated method stub
if (view.getId()==R.id.icon) {
image = (ImageView) view;
new DownloadImage().execute(cursor.getInt(3),image);
return true;
}
return false;
}
});
this.setListAdapter(adapter);
} |
Le nom et les prénoms sont correctement associées. Mais concernant l'image, rien à faire, elles ne sont pas correctement associés à la bonne personne. En déroulant la liste, certains items changent même d'image. Je voudrais juste associer aux différents items leurs images correspondantes.
Informations supplémentaires :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| private void setImage (Bitmap image2,ImageView image) {
image.setImageBitmap(image2);
Log.d("TELECHARGEMENT","fini");
}
public class DownloadImage extends AsyncTask<Integer, Integer, Bitmap>{
ImageView im;
@Override
protected Bitmap doInBackground(Integer... arg0) {
// TODO Auto-generated method stub
return downloadImage(arg0[0]);
}
public void execute(Integer id, ImageView image) {
// TODO Auto-generated method stub
im=image;
this.execute(id);
}
protected void onPostExecute (Bitmap image) {
setImage(image,im);
}
private Bitmap downloadImage(Integer id) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize=8;
Bitmap profil=BitmapFactory.decodeResource(getResources(),id,options);
return profil;
}
} |
Merci