android中的公共List <model> loadInBackground()方法无法从jSon Array获取数据

时间:2016-05-29 14:18:35

标签: java android json

我正在使用android开发一个应用程序,而我正试图使用​​我的DataListLoader类中的loadInBackground()方法在Listfragment中显示jSon数组:

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;
}

但是当我尝试运行System.out.println中的数据时(&#34; DATA ENTRIES:&#34; +条目);作为空列表出现,因此片段活动中不会显示任何数据。任何可以帮助我修复它以便我从json获取数据的人因为它耗费了我很多时间

1 个答案:

答案 0 :(得分: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);