2016-03-29 3 views
0

Мне нужна помощь для моего Android-кода. Я хочу, чтобы показать все элементы моего веб-сервиса, но из-за линии:Android listView

result = sb.toString(); 
jArray = new JSONArray(result); 
return (JSONObject) jArray.get(0);  

только показывает мне один пункт.

Я не могу сделать петлю, которая идет итерацию через мой веб-службы

Можете ли вы мне помочь?

Вот строки кода для посещения:

private JSONObject lireJson() 
{ 
    String myurl = "http://www.siomende.fr/anoll/Vala/ws/ws.php?action=getRdv"; 
    InputStream is = null; 
    String result = ""; 
    JSONArray jArray = null; 
    try 
    { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpGet httpget = new HttpGet(myurl); 
     HttpResponse response = httpclient.execute(httpget); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 
     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(); 
     jArray = new JSONArray(result); 
     return (JSONObject) jArray.get(0); 
    } 
    catch (Exception e) 
    { 
     erreurWS = true; 
     e.printStackTrace(); 
     return null; 
    } 
} 
private void jsonToTextView(JSONObject json) 
{ 
    try 
    { 
     // Getting JSON Object 
     JSONObject c = json; 
     // Storing JSON item in a Variable 
     int idR = c.getInt("idR"); 
     String lieuR = c.getString("lieuR"); 
     String dateR = c.getString("dateR"); 
     String dureeR = c.getString("dureeR"); 
     p = new heure(lieuR, dateR, dureeR); 
     p.setId(idR); 
     genererTweets(); 
     for (int j = 0; j < c.getJSONArray("voiture").length(); j++) 
     { 
      JSONObject e = c.getJSONArray("voiture").getJSONObject(j); 
      int idV = e.getInt("idV"); 
      String plaque = e.getString("plaque"); 
      String marque = e.getString("marque"); 
      Voiture voiture = new Voiture(plaque, marque); 
      voiture.setIdV(idV); 
      genererTweets(); 
      tweets.add(new Voiture(voiture.getMarqueV(), voiture.getPlaqueImmatriculationV())); 
      p.ajoutVoiture(voiture); 
     } 
    } 
    catch (JSONException e) 
    { 
     e.printStackTrace(); 
    } 
} 
+0

Почему вы используете '' возвращение (JSONObject) jArray .get (0); '', он просто возвращает один элемент в массиве. –

+0

Да, я знаю, он просто возвращает один элемент, и я хочу, чтобы все предметы ... – krowry

ответ

0

Сделайте свой метод тип возвращаемого JSONArray и вместо return (JSONObject) jArray.get(0); вы просто написать return (JSONArray)jArray; Тогда вы получите массив, который вы можете использовать в цикле.

+0

Я пытаюсь сделать это решение Шехар, но когда я использую (JSONArray) jArray, у меня есть другая ошибка здесь: protected Void doInBackground (Void ... args) { JSONArray jsonProduits = lireJson(); если (! ErreurWS) jsonToTextView (jsonProduits); return null; } '}' Ошибка для jsonProduits' «jsonToTextView (org.JSON.Object) в JSONPARSE не может быть применена к org.json.JSONArray», и если я попытаюсь написать JSONObject jsonProduits = lireJson(); он хочет, чтобы я написал JSONArray .... – krowry

+0

@krowry Пожалуйста, отредактируйте ваш вопрос выше. Как вы можете видеть, код не выглядит красивым в комментариях. –

+0

попробуйте ваше решение Shekhar, но когда я использую '(JSONArray) jArray' у меня есть другая ошибка здесь: 'protected Void doInBackground (Void ... args) {JSONArray jsonProduits = lireJson(); if (! erreurWS) jsonToTextView (jsonProduits); return null; } '' ошибка для jsonProduits' "jsonToTextView (org.JSON.Object) в JSONPARSE не может быть применена к org.json.JSONArray", и если я попытаюсь написать 'JSONObject jsonProduits = lireJson();' он хочет, чтобы я написал JSONArray .. .. – krowry

0

1. Изменение функции lireJson с возвращаемым значением является JSONArray:

private JSONArray lireJson(){ 

String myurl = "http://www.siomende.fr/anoll/Vala/ws/ws.php?action=getRdv"; 
InputStream is = null; 
String result = ""; 
JSONArray jArray = null; 
try 
{ 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpGet httpget = new HttpGet(myurl); 
    HttpResponse response = httpclient.execute(httpget); 
    HttpEntity entity = response.getEntity(); 
    is = entity.getContent(); 
    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(); 
    jArray = new JSONArray(result); 
    return jArray; 
} 
catch (Exception e) 
{ 
    erreurWS = true; 
    e.printStackTrace(); 
    return null; 
} 
} 

2. Преобразование JSONArray в JSONObject

private void jsonToTextView(JSONArray jArray){ 
try 
{ 
    // Getting JSON Object 
    for (int i = 0; i <jArray.length(); i++){ 
     JSONObject obj = jArray.getJSONObject(i); 
     //Do anything with obj 
    } 
} 
catch (JSONException e) 
{ 
    e.printStackTrace(); 
} 
}