ListView, SimpleAdapter, Image
Bonjour,
Je souhaite afficher des images provenant d'internet (URL) dans une listview. Ma liste est créée avec avec un SimpleAdapter.
Je tente de récupérer les images avec une AsyncTask et de les passer au SimpleAdapter avec le type Drawable. Mais cela ne fonctionne pas.
Faut-il obligatoirement redéfinir la classe SimpleAdapter ?
Voici le code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| private class getImageFromUrl extends AsyncTask <String, Void, Drawable> {
@Override
protected Drawable doInBackground(String... params) {
String url = params[0];
try {
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
} catch (Exception e) {
return null;
}
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11
| try {
d = new getImageFromUrl().execute(Config.IMAGES_PATH+array.getJSONObject(i).getString("source")).get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
item.put("img", d); |
Merci pour votre aide
Problème résolu avec un ViewBinder
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
| class MyBinder implements ViewBinder{
@Override
public boolean setViewValue(View view, Object data, String textRepresentation) {
if(view.getId() == R.id.imageview_photo){
String url = (String) data;
ImageView image = (ImageView) view;
Drawable d = null;
try {
d = new getImageFromUrl().execute(url).get();
image.setImageDrawable(d);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("test", url);
return true;
}
return false;
}
} |