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; } } }Merci pour votre aide
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);
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; } }
Partager