任何人都可以帮我解决这个(对我来说)奇怪的错误。我已经看了几个小时但仍然无法弄明白,我在网上也找不到任何相似的内容。
我正在使用retrofit2和OkHttp3进行一些GET API调用。不知何故,我得到一个响应(这是成功&&主体确实包含了必须的),我尝试将其添加到列表中,在循环结束时列表大小返回0.
final List<Object> objectList = new ArrayList<>();
final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity);
...
dialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
API someAPI = new API();
for (int i = 0; i < listWithIds.size(); i++) {
Call<Object> call = someAPI.getObject(listWithIds.get(i).getId());
final int finalI = i;
call.enqueue(new Callback<Object>() {
@Override
public void onResponse(Call<Object> call, Response<Object> response) {
if (response.isSuccessful()) {
objectList.add(response.body());
}
}
@Override
public void onFailure(Call<Object> call, Throwable t) {
}
});
}
}
});
答案 0 :(得分:3)
队列是异步的,你在循环内检查列表大小但是在队列之外,这太早了。列表大小仍为零,因为您在回调响应中添加了对象。
尝试检查回调委托中的列表大小。