线程正常工作时抛出 ArrayIndexOutOfBoundsException

ArrayIndexOutOfBoundsException throws while Thread is working normally

我正在使用 Thread 在 Thread.sleep 的时间后将颜色逐一设置为 ImageView 的列表。它正常工作,但在 Thread 的几次循环后,我的应用程序停止工作并抛出 ArrayIndexOutOfBoundsException.

private Runnable runnable = new Runnable() {

        int position = 0;

        @Override
        public void run() {
            while (true) {
                if (position >= MAX_ITEM) {
                    position = 0;
                }
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        for (int i = 0; i < itemIndicators.size(); i++) {
                            itemIndicators.get(i).setSelected(false);
                        }
                        if (position >= 0){
                            itemIndicators.get(position-1).setSelected(true);
                        }
                    }
                });

                position++;

                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

        }
    };

我的列表大小与 MAX_ITEM 相同。 请帮我解决这个问题。非常感谢!

如果位置为 0,则您正在访问索引为 -1 的项目

if (position >= 0) {
    itemIndicators.get(position-1).setSelected(true);
}

删除-1。

你的错误是由这一行引起的

  if (position >= 0){
     itemIndicators.get(position-1).setSelected(true);
   }

您应该将您的条件编辑为 position > 0 以避免获得 get(-1)