【问题标题】:Adding objects to an arraylist in a for loop, but arraylist is empty after for loop is done?在for循环中将对象添加到arraylist,但for循环完成后arraylist为空?
【发布时间】:2025-11-28 08:55:01
【问题描述】:

我是初学者,所以我觉得我可能会犯一个愚蠢的错误。基本上,我正在运行一个 for 循环,每次迭代时,它都会创建一个新的 Event 对象并将其添加到名为 eventsList 的数组列表中。

我在每个 for 循环迭代的底部添加了一个打印语句,它告诉我 eventsList 的大小正在增加:1,2,3..

但是对于第二个打印语句,在 for 循环之外它告诉我大小为 0(第二个打印语句说:“大小是...”)

ListView eventsListView;
ArrayList<Event> eventList = new ArrayList<Event>();
Event event = null;

public void update() {

    ParseQuery<ParseObject> query = ParseQuery.getQuery("Events");

    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException exception) {
            if (exception != null) {
                return
            }

            if (objects.size() == 0) {
                System.out.println("objects empty");
                return
            }

            System.out.println("objects size > 0");

            for (ParseObject object: objects) {

                String address = object.getString("address");
                String name = object.getString("name");
                String date = object.getString("date");
                String time = object.getString("time");
                String description = 
                object.getString("description");

                event = new Event(name, date, address);
                eventList.add(event);
                System.out.println(eventList.size());

            }
        }
    });

    System.out.println("The size is: " + eventList.size());

}

【问题讨论】:

  • 在 android 中使用 Log 而不是 print 进行调试。更改后发布您的日志。

标签: java android arraylist


【解决方案1】:

您的代码没有明显的问题,但这里的问题是当The size is: print 语句被命中时,实际填充事件列表的后台任务可能尚未完成。因此,您需要对代码进行的更改是合乎逻辑的,您仅在后台任务完成后尝试使用填充列表。这样做的地方是在done() 方法中。

【讨论】: