Bonjour,
J'ai un petit problème avec mon code java et JSON pour récupérer des données MySQL depuis une appli android.
Mon code est le suivant :
Il fonctionne parfaitement j'ai bien :
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 package activite.moi; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.text.TextWatcher; import android.util.Log; import android.widget.LinearLayout; import android.widget.TextView; public class ListRestaurant2 extends Activity { TextView txt; String returnString = ""; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listrestaurant); LinearLayout rootLayout = new LinearLayout(getApplicationContext()); txt = new TextView(getApplicationContext()); rootLayout.addView(txt); setContentView(rootLayout); txt.setText(getServerData()); } public static final String strURL = "URL/ville.php"; private String getServerData() { InputStream is = null; String result = ""; // CHOIX REQUETE : ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("ville", "L")); // CONNEXION : try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(strURL); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); } catch(Exception e) { Log.e("log_tag", "Error in http connection " + e.toString()); } // CONVERSION REQUETE EN STRING try { BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result=sb.toString(); }catch(Exception e){ Log.e("log_tag", "Error converting result " + e.toString()); } // AFFICHAGE RESULTAT try { JSONArray jArray = new JSONArray(result); for(int i=0;i<jArray.length();i++){ JSONObject json_data = jArray.getJSONObject(i); // Résultats de la requête : json_data.getInt("ID_ville") //returnString += jArray.getJSONObject(i)+"\n"; returnString += json_data.getString("Nom_ville") +"\n"; } } catch(JSONException e) { Log.e("log_tag", "Error parsing data " + e.toString()); } return returnString; } }
http://imageshack.us/photo/my-images...titre2hmp.png/
Maintenant j'aimerais que chaque nom de ville soit dans un bouton pour créer une sorte de "catalogue" comme on dit. Parce qu'avec ce code toutes les villes récupérer dans la BDD sont "mise" dans le même String et je ne peux rien en faire. Il faudrait que le résultat soit un Bouton Lille, puis un Bouton Lyon, je dis des boutons mais les TextView c'est pareil n'importe qu'elle objet mais indépendant pour chaque résultat.
J'ai essayé toute sorte de choses avec des tableau de string en entrée/sortie dans la fonction getServerData puis un tableau de bouton dans le onCreate pour faire des setText sur les valeurs récupérer dans le tableau mais rien ne fonctionne.
Si quelqu'un pouvait me montrer comment faire je lui serait très reconnaissant, j'ai ratissé le web mais le peu que je trouve sur les connexions mySQL avec android ne m'aide pas beaucoup. J'espère que vous avez compris mon problème.
Merci d'avance.
Partager