我遇到了一个非常烦人的问题,一些代码抛出 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”,为标题创建一个新的文本视图并将其添加到布局中(这很好......)。
在 for 循环内部,想法是将数组列表中的所有对象添加到布局中。现在我知道“addTimetableItem”代码可以像我已经测试过的那样工作,但我的问题是我似乎无法从数组列表中获取最后一个对象。如果我声明 for 循环仅运行 for
"i<sortedFridayTimes.size()"
然后程序运行正常,但我没有得到数组列表中我知道存在的最后一个条目,因为我已经调试并观察了我的变量。添加如上所示的“+1”后,我现在得到 IndexOutOfBoundsException,我真的不知道为什么。正如我所说,我已经调试过,并且知道我试图指向的数组列表中存在一个条目,但它只是崩溃了。如果需要,我可以提供更多代码,但是有人有什么想法吗?
您应该接受@Tim 或@Graham 的答案,这只是一个附录。他们对你的看法是正确的size()+1
越过数组的末尾。
如果您在使用索引正确获取列表中的所有内容时遇到困难,您还可以尝试使用 for-each 循环(取决于您所使用的 Android SDK 的版本)。我假设sortedFridayTimes
是一个类的列表TimetableItem
因为你没有指定。
So this:
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
任何地方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)