如何停止循环执行,直到android中出现响应
我想将每个用户响应添加到我的列表列表项中,插入响应的特定键和值对。然而,在这段代码中,getCat的第一个循环执行4次。。。然后所有响应都被添加到最后一个键,即4如何停止循环执行,直到android中出现响应,android,Android,我想将每个用户响应添加到我的列表列表项中,插入响应的特定键和值对。然而,在这段代码中,getCat的第一个循环执行4次。。。然后所有响应都被添加到最后一个键,即4 public void getCat(){ String url = "http://******/*****/*****.json"; HashMap<String, List<CatType> hmap=new HashMap<String, ArrayList<CatType>
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,正如你所说的,我也尝试了异步任务,但它不工作。请帮帮我。