Merci pour ta réponse,
Entre temps j'ai bidouillé 2-3 trucs donc voici mon code:
WebCampus.java:
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
| package com.supinfo.notetonsta.web;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import android.util.Log;
import com.supinfo.notetonsta.model.Campus;
public class WebCampus {
JSONArray jsonArray;//contiendra la liste de tous les campus
private List<Campus>listCampus;
String result;
public List<Campus>getCampusList(){
try {
//connexion a la ressource
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet();
httpGet.setURI(new URI("http://10.0.2.2:8080/NoteTonSTA/rest/campuses"));
httpGet.setHeader("Content-Type","application/json");//utilisation json et non xml
HttpResponse httpResponse = httpClient.execute(httpGet);
result = EntityUtils.toString(httpResponse.getEntity());
} catch (Exception e) {
Log.e("HTTPClient", e.getMessage(), e);
}
try {
jsonArray = new JSONArray(result);
} catch (Exception e) {
Log.e(getClass().getName(), e.getMessage(), e);
}
listCampus = new ArrayList<Campus>();
//récupération des attributs json de l'url pour tous les campus
try {
// campus.setName(object.getString("name"));
// campus.setId(object.getLong("id"));
for (int i = 0; i < jsonArray.length(); i++) {
Campus campus = new Campus();
JSONObject jsonObject = jsonArray.getJSONObject(i);
campus.setId(jsonObject.getLong("id"));
campus.setName(jsonObject.getString("name"));
listCampus.add(campus);
}
} catch (Exception e) {
Log.e(getClass().getName(), e.getMessage(), e);
}
return listCampus;//on retourne tous les objets campus
}
public WebCampus() {
}
} |
utilisation dans l'activity:
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
| package com.supinfo.notetonsta;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONException;
import org.json.JSONObject;
import com.supinfo.notetonsta.model.Campus;
import com.supinfo.notetonsta.web.WebCampus;
import android.app.Activity;
import android.content.Intent;
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.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
//main activity
public class NoteTonSTA2Activity extends Activity implements OnClickListener,OnItemClickListener{
/** Called when the activity is first created. */
List<Campus>listCampus;
LinearLayout mainLayout;//layout principal
ListView listView;//listView du main.xml
ListAdapter la;
JSONObject object;
WebCampus webCampus;
//test pour tester changement d'activité:
TextView presentation;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);//on mappe activity à main.xml
webCampus = new WebCampus();//classe de gestion des campus
listCampus = new ArrayList<Campus>();
listCampus = webCampus.getCampusList();
if (listCampus != null) {
} else {
Log.e("ListCampusError", "Erreur lors de l'operation listCampus");
}
//récupération éléments xml (=view)
mainLayout = (LinearLayout)findViewById(R.id.mainLayout);//conversion en linearlayout, on récupere via ressource id
//listView = (ListView)findViewById(R.id.campuses);//conversion en listview
presentation = (TextView)findViewById(R.id.presentation);//on récupère l'élément
presentation.setOnClickListener(this);
}
//ajout de campus, affichage des campus, prendre les id et fonction de ces id --> afficher dans l'autre activity
public void addCampus(){
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
}
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
}
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(this, CampusIntervention.class);
startActivity(intent);
//startActivityForResult(intent, TEST);//on change de page = activity
}
//au moment ou on change d'activity, passer dans le bundle l'id du campus visé pour ensuite afficher dans la next activity les interventions du campus sélectionné:
//onActivityResult
} |
Et voici comme tu me l'as demandé le résultat de la ressource du browser:
{"campuses":[{"id":"2","name":"Bordeaux","id":"3","name":"Lille","id":"1","name":"Lyon"}]}
Pour finir les logs qui montrent que les valeurs sont mal stockées:
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
| 03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): Value {"campuses":[{"id":"1","name":"Lyon"}]} of type org.json.JSONObject cannot be converted to JSONArray
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): org.json.JSONException: Value {"campuses":[{"id":"1","name":"Lyon"}]} of type org.json.JSONObject cannot be converted to JSONArray
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at org.json.JSON.typeMismatch(JSON.java:107)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at org.json.JSONArray.<init>(JSONArray.java:91)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at org.json.JSONArray.<init>(JSONArray.java:103)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at com.supinfo.notetonsta.web.WebCampus.getCampusList(WebCampus.java:43)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at com.supinfo.notetonsta.NoteTonSTA2Activity.onCreate(NoteTonSTA2Activity.java:49)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.os.Handler.dispatchMessage(Handler.java:99)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.os.Looper.loop(Looper.java:123)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.app.ActivityThread.main(ActivityThread.java:3683)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at java.lang.reflect.Method.invokeNative(Native Method)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at java.lang.reflect.Method.invoke(Method.java:507)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-28 13:14:41.509: E/com.supinfo.notetonsta.web.WebCampus(12181): at dalvik.system.NativeStart.main(Native Method)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): null
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): java.lang.NullPointerException
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at com.supinfo.notetonsta.web.WebCampus.getCampusList(WebCampus.java:55)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at com.supinfo.notetonsta.NoteTonSTA2Activity.onCreate(NoteTonSTA2Activity.java:49)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.os.Handler.dispatchMessage(Handler.java:99)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.os.Looper.loop(Looper.java:123)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at android.app.ActivityThread.main(ActivityThread.java:3683)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at java.lang.reflect.Method.invokeNative(Native Method)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at java.lang.reflect.Method.invoke(Method.java:507)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-28 13:14:41.519: E/com.supinfo.notetonsta.web.WebCampus(12181): at dalvik.system.NativeStart.main(Native Method) |
Des idées pour stocker les données JSON de manière convenable? :s
PS: l'adresse que j'utilise fonctionne, l'adresse en localhost ne marche pas dans le programme mais je ne sais pas pourquoi (il arrive a retrouver la ressource en tout cas)...
Partager