2016-05-29 8 views
0

Ich entwickle eine Anwendung mit Android und ich versuche, die jSon Array in ListFragment mit der loadInBackground() -Methode unten in meiner DataListLoader-Klasse angezeigt zu bekommen :öffentliche Liste <Model> loadInBackground() -Methode in Android erhält keine Daten von jSon Array

class DataListLoader extends AsyncTaskLoader<List<Model>> { 
List<Model> mModels; 
String jsonString; 
String name = "Daniel Nyerere", phone = "0652400670"; 

public DataListLoader(Context context) { 
    super(context); 
    loadInBackground(); 
} 



public List<Model> loadInBackground() { 
    // You should perform the heavy task of getting data from 
    // Internet or database or other source 
    // Here, we are generating some Sample data 
    // Create corresponding array of entries and load with data. 
    final List<Model> entries = new ArrayList<Model>(50); 
    StringRequest stringRequest = new StringRequest(
      Request.Method.GET, "http://10.0.2.2/webapp/json_get_data.php", new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      if (response.trim().contains("server_response")) { 
       jsonString = response.toString(); 
       try { 
        JSONObject jsonObject = new JSONObject(jsonString); 
        JSONArray jsonArray = jsonObject.getJSONArray("server_response"); 
        int count = 0; 

        while (count < jsonArray.length()) { 
         JSONObject jo = jsonArray.getJSONObject(count); 
         name = jo.getString("name"); 
         phone = jo.getString("user_phone"); 
         entries.add(new Model(name, phone)); 
         System.out.println("DATA FROM JSON ARRAY: " + name + " " + phone); 
         count++; 
         return; 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

     } 
    }); 
    RequestQueue requestQueue = VolleySingleton.getInstance().getRequestQueue(); 
    requestQueue.add(stringRequest); 
    entries.add(new Model(name, phone)); 
    return entries; 
} 

Aber wenn ich versuche es die Daten von System.out.println ("Data entries:" + Einträge) zu laufen; kommt als Nullliste, so dass keine Daten in der Fragmentaktivität angezeigt werden. Jeder, der mir helfen kann, es zu reparieren, so dass ich Daten von Json bekomme, weil es mich viel Zeit verbraucht

+0

Sind Sie versuchen, Ihre JSON Array-Länge zu überprüfen? –

+0

Nein, ich möchte die Daten aus dem Array nehmen und sie in listfragment anzeigen, indem ich sie über die Liste an die Model-Klasse übergebe. – Nyerere

+0

Sie haben mich nicht verstanden ... Prüfen Sie, ob die Antwort vom Server korrekt ist? Was ist die Array-Länge? –

Antwort

0
//You can call it in UI thread 
final List<Model> entries = new ArrayList<Model>(5); 
    StringRequest stringRequest = new StringRequest(
      Request.Method.GET, "http://10.0.2.2/webapp/json_get_data.php", new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      //you need to update the `ListView` content here 
      //If you need you can create new thread here too e.g. using AsyncTask 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

     } 
    }); 
RequestQueue requestQueue = VolleySingleton.getInstance().getRequestQueue(); 
requestQueue.add(stringRequest); 
+0

Ich habe es versucht, aber das Problem kommt mit den zurückgegebenen Einträge wird Null – Nyerere

+0

Veröffentlichen Sie Ihren festen Code. Nur kann ich keinen Code von Mobile schreiben –