如何在Volley函数中返回响应值?

时间:2018-03-05 18:11:29

标签: java php android

问题1 :如何在onResponse函数中获取响应值。

问题2 :我创建 cauHoiArrayList 。当我在 onResponse function =>中检查并获取 cauHoiArrayList 值时有效。但是如果我在 GETDATA 函数==>中检查并获得 cauHoiArrayList 值那没起效。如何获得 cauHoiArrayList 值。

谢谢你,

这是我的代码详情:

     public void GetCauHoi(String url) {
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        StringRequest stringRequest = new StringRequest(
            Request.Method.POST,
            url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                        try {
                            JSONArray array = new JSONArray(response);
                            cauHoiArrayList = new ArrayList<>();
                            for (int i = 0; i < array.length(); i++) {
                                JSONObject object = array.getJSONObject(i);

                                _id = object.getInt("_ID");
                                cauhoi = object.getString("CauHoi");
                                tenmh = object.getString("TenMH");
                                tenmonhoc = object.getString("TenMonHoc");
                                dapan_a = object.getString("DapAn_A");
                                dapan_b = object.getString("DapAn_B");
                                dapan_c = object.getString("DapAn_C");
                                dapan_d = object.getString("DapAn_D");
                                dapandung = object.getString("DapAnDung");
                                hinhanh = object.getString("HinhAnh");
                                dokho = object.getInt("DoKho");
                                cauHoiArrayList.add(new CauHoi(_id, cauhoi, tenmh, tenmonhoc, dapan_a, dapan_b, dapan_c, dapan_d, dapandung, hinhanh, dokho));
                            }
                            Log.d("tag",""+cauHoiArrayList.get(0).getCauHoi());
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(ScreenSlideActivity.this, ""+error, Toast.LENGTH_SHORT).show();
                }
            }) {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("laytenmonhocc", "" + laytenmonhoc);
            params.put("laydokhoc", "" + laydokho);
            return params;
        }
    };
    requestQueue.add(stringRequest);
}

public ArrayList<CauHoi> GETDATA (){
    return cauHoiArrayList;
}

1 个答案:

答案 0 :(得分:0)

Volley次请求为asynchronous。您必须在尚未到达响应时调用GETDATA。有响应时,您需要确保致电GETGATA。只有OnResponse方法才能保证响应存在。