android volley JsonArrayRequest什么都不返回

时间:2016-11-24 08:51:45

标签: android-volley

在下面的代码中,我的arrayList在JsonArrayRequest块之后将为空。 我在这一行设置了断点:“int size = arrayList.size();” 在“while”循环完成之前,每件事都可以。之后allayList为空。

JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, json_url,(String) null,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    int count=0;
                    int responseLength = response.length();
                    responseLength--;
                   while (count<responseLength)
                   {
                       try {
                           JSONObject jsonObject = response.getJSONObject(count);
                           Contact contact = new Contact(jsonObject.getString("title"),
                                   jsonObject.getString("email"),
                                   jsonObject.getString("description"),
                                   jsonObject.getString("date"),
                                   jsonObject.getBoolean("status"));

                           arrayList.add(contact);
                           int size = arrayList.size();
                           count++;

                       } catch (JSONException e) {

                           e.printStackTrace();
                       }
                   }
                    int size = arrayList.size();
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(context,"Error....",Toast.LENGTH_SHORT).show();
                    error.printStackTrace();

                }
            }
    );
    int size = arrayList.size();
    VolleySingleton.getmInstance(context).addToRequestQueue(jsonArrayRequest);
    return arrayList;

1 个答案:

答案 0 :(得分:0)

我将使用CallBack界面显示我所做的事情:

onCreate()方法中的

 recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
    recyclerView.setHasFixedSize(true);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(linearLayoutManager);
    BackgroundTask backgroundTask = new BackgroundTask(this);
    backgroundTask.getContacts(new BackgroundTask.arrayListCallBack() {
        @Override
        public void onSuccess(ArrayList<Contact> contacts) {
            RecyclerView.Adapter adapter = new RecyclerAdapter(MainActivity.this, contacts);
            recyclerView.setAdapter(adapter);
        }

        @Override
        public void onFail(String error) {
            Toast.makeText(MainActivity.this, error, Toast.LENGTH_LONG).show();
        }
    });

并在BackgroundTask类中:

JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.POST, server_url, new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {
            int count = 0;
            while (count < response.length()) {
                try {
                    JSONObject jsonObject = response.getJSONObject(count);
                    Contact contact = new Contact(jsonObject.getString("name"), jsonObject.getString("section"));
                    contacts.add(contact);
                    Log.d("process request", "....."+jsonObject.getString("name"));
                    count++;
                } catch (JSONException e) {
                    e.printStackTrace();
                    Toast.makeText(context, e.getMessage()+"\nError in Response", Toast.LENGTH_LONG).show();
                }
                callBack.onSuccess(contacts);
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
            Toast.makeText(context, error.getMessage()+"\nError in Connection", Toast.LENGTH_LONG).show();
            callBack.onFail("There's error ...");
        }

    });

    MySingleton.getInstance(context).addToRequestQueue(jsonArrayRequest);
}

public interface arrayListCallBack {
    void onSuccess(ArrayList<Contact> contacts);
    void onFail(String error);
}