小编典典

Android ArrayList的IndexOutOfBoundsException

java

我有一些代码引发IndexOutOfBoundsException异常烦人的问题,我真的不明白为什么。logcat指向以下代码的“
addTimetableItem”,这将无法进一步说明:

if(sortedFridayTimes.size()>0){
    insertDay("Friday");
    for(int i=1; i<sortedFridayTimes.size()+1;i++){
        addTimetableItem(sortedFridayTimes.get(i));
    }
}


sortedFridayTimes”是一个包含我自己的“时间表条目”对象的ArrayList,我已经对其进行了排序。首先检查大小,以查看是否有任何对象,然后检查是否存在“
insertDay”,这将为标题创建一个新的textview并将其添加到布局中(这很好..)。在for循环内,想法是将arraylist中的所有对象添加到布局中。现在我知道“
addTimetableItem”代码已经通过ive测试,但是我的问题是我似乎无法从arraylist中获取最后一个对象。如果我声明for循环仅针对

"i<sortedFridayTimes.size()"

然后程序可以正常运行,但是我没有发现arraylist中存在的最后一个条目,因为我已经调试并监视了变量。如上所示,在添加“
+1”后,我现在得到了IndexOutOfBoundsException,但我真的不知道为什么。就像我说的那样,我已经调试了,而且我知道要尝试指向的arraylist中存在一个条目,但是它崩溃了。如果需要,我可以提供更多代码,但是有人有什么想法吗?


阅读 245

收藏
2020-11-30

共1个答案

小编典典

i<sortedFridayTimes.size()+1

您正在循环经过数组中的最后一个元素。为什么+1呢?

如果N数组中有元素,则元素从索引0N-1

所以应该是:

for(int i=0; i<sortedFridayTimes.size(); i++) {
2020-11-30