添加对象后,列表大小返回0

时间:2016-05-17 21:05:03

标签: java android arraylist retrofit okhttp

任何人都可以帮我解决这个(对我来说)奇怪的错误。我已经看了几个小时但仍然无法弄明白,我在网上也找不到任何相似的内容。

我正在使用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) {

                        }
                    });
                }

            }
        });

1 个答案:

答案 0 :(得分:3)

队列是异步的,你在循环内检查列表大小但是在队列之外,这太早了。列表大小仍为零,因为您在回调响应中添加了对象。

尝试检查回调委托中的列表大小。