根据jsonarray请求填充java Arraylist
我有一个返回arraylist的方法,它是从jsonarray填充的 jsonrequest工作正常,但当我调用该方法时,arraylist返回大小为0的值,即使它已填充。 下面是代码,我做错了什么
private ArrayList<String> queryRes(String url, String searchString) {
final ArrayList<String> mylist = new ArrayList<>();
AsyncHttpClient client = new AsyncHttpClient();
client.get(url + searchString,
new JsonHttpResponseHandler() {
@Override
public void onSuccess(JSONArray jsonArray) {
for(int i =0; i < jsonArray.length(); i++) {
mylist.add(i, jsonArray.optJSONObject(i).optString("id"));
//Check if it is added to the list
Log.d("Try: ", mylist.get(i));
}
}
@Override
public void onFailure(int statusCode, Throwable throwable, JSONObject error) {
}
});
return mylist;
}
# 1 楼答案
当得到响应时调用onSuccess()意味着AsynHttp调用在另一个线程中完成,所以在onSuccess之前调用return语句,这就是大小为0的原因
您可以在调试器上验证它
我的建议是从onSuccess()调用一个方法,这样就可以得到Arraylist
# 2 楼答案
如果你在一节课上做每件事
一种处理列表的方法