我正在使用线程将颜色设置为ImageView
之后的Thread.sleep
列表。它可以正常工作,但是经过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)
如果位置为0,则您正在访问索引为-1的项
if (position >= 0) {
itemIndicators.get(position-1).setSelected(true);
}
删除-1。
答案 1 :(得分:1)
您的错误是由此行引起的
if (position >= 0){
itemIndicators.get(position-1).setSelected(true);
}
您应该将条件修改为position > 0
以避免获得get(-1)