Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何停止循环执行,直到android中出现响应_Android - Fatal编程技术网

如何停止循环执行,直到android中出现响应

如何停止循环执行,直到android中出现响应,android,Android,我想将每个用户响应添加到我的列表列表项中,插入响应的特定键和值对。然而,在这段代码中,getCat的第一个循环执行4次。。。然后所有响应都被添加到最后一个键,即4 public void getCat(){ String url = "http://******/*****/*****.json"; HashMap<String, List<CatType> hmap=new HashMap<String, ArrayList<CatType>

我想将每个用户响应添加到我的列表列表项中,插入响应的特定键和值对。然而,在这段代码中,getCat的第一个循环执行4次。。。然后所有响应都被添加到最后一个键,即4

public void getCat(){

    String url = "http://******/*****/*****.json";
    HashMap<String, List<CatType> hmap=new HashMap<String, ArrayList<CatType>>();
    private List<ListItem> listItems;
    for(int i=1;i<5;i++)
       {

       JsonObjectRequest jsonReq = new JsonObjectRequest(Method.GET,
             url, null, new Response.Listener<JSONObject>() {

       @Override
       public void onResponse(JSONObject response) {
           Log.d(TAG, "Response: " + response.toString());
           parseJsonFeed(response);
           listItems = new ArrayList<ListItem>();
           listItem.addAll(O_listItems);
           hmap.put("["+i+"]",listItem);
       }
    }, new Response.ErrorListener() {

       @Override
       public void onErrorResponse(VolleyError error) {
           Log.d(TAG, "Error: " + error.getMessage());
       }
    });

    // Adding request to volley request queue
    AppController.getInstance().addToRequestQueue(jsonReq);
    }
}

private void parseJsonFeed(JSONObject response) {
    try {
        JSONArray feedArray = response.getJSONArray("food");
        for (int i = 0; i < feedArray.length(); i++) {
            JSONObject feedObj = (JSONObject) feedArray.get(i);
            OrderListItem item=new OrderListItem();
            item.setId(feedObj.getInt("id"));
            item.setImage(feedObj.getString("image"));
            item.setItem_name(feedObj.getString("name"));
            O_listItems.add(item);
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

这是因为每次发出请求时,都会创建一个新线程,所以在第一次命中返回响应之前,会生成一个新的命中,并且会继续。对于这种情况,最好使用AsyncTask或进行同步命中。请参阅同步点击的答案。

I按给定链接执行。但是我没有得到必须从服务器接收响应的地方,我必须将Json响应传递给parseJsonJSONObject response.JsonObjectRequest request=new JsonObjectRequestMethod.POST,URL_FETCH1+categoryTemp.getId,null,future,future;它不工作Hi Varnkr,正如你所说的,我也尝试了异步任务,但它不工作。请帮帮我。