gpt4 book ai didi

java - Android ArrayList 的 IndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-01 19:05:33 27 4
gpt4 key购买 nike

我遇到了一个非常烦人的问题,一些代码抛出 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 循环内部,想法是将数组列表中的所有对象添加到布局中。现在我知道“addTimetableItem”代码可以像我已经测试过的那样工作,但我的问题是我似乎无法从数组列表中获取最后一个对象。如果我声明 for 循环仅运行 for

"i<sortedFridayTimes.size()" 

然后程序运行良好,但我没有得到我知道存在的数组列表中的最后一个条目,因为我已经调试并观察了我的变量。添加如上所示的“+1”后,我现在得到 IndexOutOfBoundsException,我真的不知道为什么。正如我所说,我已经调试过,并且知道我试图指向的数组列表中存在一个条目,但它只是崩溃了。如果需要,我可以提供更多代码,但是有人有什么想法吗?

最佳答案

您应该接受@Tim 或@Graham 的回答,这只是一个附录。他们关于 size()+1 超出数组末尾的说法是正确的。

如果您在使用索引正确获取列表中的所有内容时遇到困难,您还可以尝试使用 for-each 循环(具体取决于您使用的 Android SDK 版本)。我假设 sortedFridayTimes 是类 TimetableItem 的列表,因为您没有指定。

所以这个:

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

变成这样:

if(!sortedFridayTimes.isEmtpy()){
insertDay("Friday");
for(TimetimeItem item : sortedFridayTimes){
addTimetableItem(item);
}
}

如果您实际上不需要在任何地方使用 i ,那就更简洁了。

关于java - Android ArrayList 的 IndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10262269/

27 4 0