Hi,

Voilà je voudrais pouvoir mettre une image, avec du texte pour chaque item dans une listview.

Je fais cela actuellement avec un SimpleAdapter qui récupère une image dasn le dossier drawable. Maintenant j'aimerais pouvoir faire pareil mais avec une image venant de internet.

J'ai le code pour downloader l'image mais après je ne sais pas comment la définir dans ma listview.

voilà mon code:

  • charger l'image:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
ImageView bmImage = (ImageView)findViewById(R.id.img);
		BitmapFactory.Options bmOptions;
		bmOptions = new BitmapFactory.Options();
		bmOptions.inSampleSize = 1;
		Bitmap bm = LoadImage("http://4.bp.blogspot.com/_C5a2qH8Y_jk/StYXDpZ9-WI/AAAAAAAAAJQ/sCgPx6jfWPU/S1600-R/android.png",bmOptions);
		bmImage.setImageBitmap(bm);
  • mon code pour le reste:

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
package Tarabbia.Xamax;
 
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
 
public class calendrier extends Activity implements OnClickListener {
	//Variables Globales
	private ListView maListViewPerso;
	JSONObject json_data;//objet qui récupère les partie de la requête sur le webService PHP
	EditText tbValue = null;
	//On déclare la HashMap qui contiendra les informations pour un item
	public HashMap<String, String> map;
 
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.calendrier);
		//affichage du popup
		Toast.makeText(this,"Le calendrier de Xamax",Toast.LENGTH_LONG).show();
 
		//Récupération de la listview créée dans le fichier joueurs.xml
		maListViewPerso = (ListView) findViewById(R.id.listviewcalendrier);
 
		//Récupération du button
		Button btnRechercher = (Button)findViewById(R.id.btnAnnee);
 
		//Récupération du textBox, activation de l'evenement CLICK
		tbValue = (EditText)this.findViewById(R.id.editTextAnnee);
		btnRechercher.setOnClickListener(this);
	}
 
	@Override
	protected void onDestroy() {
		Log.i("","OnDestroy");
		finish();
		super.onDestroy();
	}
 
	@Override
	public void onClick(View v) {
		switch (v.getId()){
		case R.id.btnAnnee:
			if (tbValue.getText().toString().equals("") ) {
				Toast.makeText(this, "Veuillez saisir une date dans la \"texte box\" au-dessus", Toast.LENGTH_SHORT).show();
			}else{
 
				if(Xamax_infos.listItemCalendrier.size()>0){
					Xamax_infos.listItemCalendrier.clear();
				}
				afficheCalendrier(tbValue.getText().toString());
			}
			break;
		}	
	}	
	public void afficheCalendrier (String var){
		try{	
			//mise en place de l'URL du webservice ansi que la requête SQL
			JSONArray jArray = new JSONArray(MySqlConnector.getData("http://jonathantarabbia.cwebh.org/xamax_mobile/select.php","calendrier",var));
 
			for(int i=0;i<jArray.length();i++){
				json_data = jArray.getJSONObject(i);
				map = new HashMap<String, String>();
				//on insère un élément titre que l'on récupérera dans le textView titre créé dans le fichier affichageitem.xml
				map.put("titre", ""+ json_data.get("Domicile")+ " VS "+ json_data.get("Visiteur"));
				//on insère un élément description que l'on récupérera dans le textView description créé dans le fichier affichageitem.xml
				map.put("description", "" + json_data.get("dateMatch") );
				//on insère la référence à l'image (convertit en String car normalement c'est un int) que l'on récupérera dans l'imageView créé dans le fichier affichageitem.xml
				map.put("img", String.valueOf(R.drawable.icon));
				//enfin on ajoute cette hashMap dans la arrayList
				Xamax_infos.listItemCalendrier.add(map);
			} 
			afficheResultat();
 
		}catch(JSONException e){
			Log.e("log_tag", "Erreur de conversion des données "+e.toString());
		}	
 
		//Enfin on met un écouteur d'évènement sur notre listView
		maListViewPerso.setOnItemClickListener(new OnItemClickListener() {
			@SuppressWarnings("unchecked")
			public void onItemClick(AdapterView<?> a, View v, int position, long id) {
 
				//on récupère la HashMap contenant les infos de notre item (titre, description, img)
				HashMap<String, String> map = (HashMap<String, String>) maListViewPerso.getItemAtPosition(position);
 
				//on créer une boite de dialogue
				AlertDialog.Builder adb = new AlertDialog.Builder(calendrier.this);
 
				//on attribut un titre à notre boite de dialogue
				adb.setTitle("Xamaxien");
 
				//on insère un message à notre boite de dialogue, et ici on affiche le titre de l'item cliqué
				adb.setMessage("Votre choix : "+map.get("titre"));
 
				//on indique que l'on veut le bouton ok à notre boite de dialogue
				adb.setPositiveButton("Ok", null);
 
				//on affiche la boite de dialogue
				adb.show();
			}
		});
	}
 
	private InputStream OpenHttpConnection(String strURL) throws IOException{
		 InputStream inputStream = null;
		 URL url = new URL(strURL);
		 URLConnection conn = url.openConnection();
 
		 try{
		  HttpURLConnection httpConn = (HttpURLConnection)conn;
		  httpConn.setRequestMethod("GET");
		  httpConn.connect();
 
		  if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
		   inputStream = httpConn.getInputStream();
		  }
		 }
		 catch (Exception ex)
		 {
		 }
		 return inputStream;
		}
 
	private Bitmap LoadImage(String URL, BitmapFactory.Options options)
	   {       
	    Bitmap bitmap = null;
	    InputStream in = null;       
	       try {
	           in = OpenHttpConnection(URL);
	           bitmap = BitmapFactory.decodeStream(in, null, options);
	           in.close();
	       } catch (IOException e1) {
	       }
	       return bitmap;               
	   }
 
	private void afficheResultat(){
 
		//Création d'un SimpleAdapter qui se chargera de mettre les items présent dans notre list (listItem) dans la vue affichageitem
		SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(), Xamax_infos.listItemCalendrier, R.layout.affichageitem,
				new String[] {"img", "titre", "description"}, new int[] {R.id.img, R.id.titre, R.id.description});
 
		//On attribut à notre listView l'adapter que l'on vient de créer
		maListViewPerso.setAdapter(mSchedule);
	}
}
Merci D'avance,

John