Android http请求同步与截击

Android http请求同步与截击,android,Android,我编写代码向http服务器发出请求: public void reqCategory() { RequestQueue queue = Volley.newRequestQueue(this); String url = "http://myaddress/getdata.php"; StringRequest postRequest = new StringRequest(Request.Method.POST, url, new Response.Listener&l

我编写代码向http服务器发出请求:

public void reqCategory() {
    RequestQueue queue = Volley.newRequestQueue(this);
    String url = "http://myaddress/getdata.php";
    StringRequest postRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {

            //Json Parse
            try {

                JSONArray jsonArray = new JSONArray(response);

                catList.clear();

                for (int i=0; i<jsonArray.length(); i++) {

                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    catList.add(jsonObject.getString("categoria"));

                }

            } catch (JSONException e) {
                e.printStackTrace();

            }
        }

    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d("Error -> ", error.toString());


        }
    }) {
        @Override
        protected Map<String, String> getParams() { //nessun parametro
            Map<String, String> params = new HashMap<String, String>();
            //no param at moment
            return params;
        }
    };
    queue.add(postRequest);
}
这应该是用reqCategory()中的值填充列表catList,但是for循环不显示这些值,因为请求是asyncron

如何发出syncron请求,以便在reqCategory()调用后在catList中获得值,并可以查看循环中的值


谢谢。

尝试对代码进行一些小的编辑

for (int i=0; i<jsonArray.length(); i++) {

                JSONObject jsonObject = jsonArray.getJSONObject(i);
                String Temp = new 
                catList.add(new String(jsonObject.getString("categoria")));

            }

for(int i=0;i在Android上不能有网络阻止UI线程。所有网络必须在单独的线程上,因此需要重构代码,使其类似于:

onCreate() {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_comanda);

  reqCategory();
}

其中
reqCategory()
必须生成,即用于网络的AsyncTask。AsyncTask完成后,您可以在其
onPostExecute()
中执行循环(或者在
odInBackground()
中执行循环,如果您不需要触摸UI小部件)。

什么是
synchron request
?应请求,应用程序将等待直到请求结束。我认为。
for (int i=0; i<jsonArray.length(); i++) {

                JSONObject jsonObject = jsonArray.getJSONObject(i);
                String Temp = new 
                catList.add(new String(jsonObject.getString("categoria")));

            }
onCreate() {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_comanda);

  reqCategory();
}