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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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;
    			    }
    			}