我在Android应用中遇到了一个奇怪的问题。 我有一个ArrayList,我尝试用get(0)获取第一个项目。 但由于IndexOutOfBoundsException,应用程序有时会崩溃。
代码:
int currentItemPosition = 0;
if(!mArrayList.isEmpty()) {
currentItem = mArrayList.get(currentItemPosition);
}
怎么可能?
日志:
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
...
答案 0 :(得分:0)
如上所述(单ArrayList
,单线程,& c),问题似乎有点不可能"。但是,如果这个(http://pastebin.com/2fYnbG9b)是您的实际代码段:
private void showFirstItemOfPage() {
mCurrentBlockItem = 0;
if(mBlocksList.get(mPager.getCurrentItem()) != null && !mBlocksList.get(mPager.getCurrentItem()).isEmpty())
{
addSingleItem(mBlocksList.get(mPager.getCurrentItem()).get(mCurrentBlockItem));
}
}
也许答案是mBlocksList
实际上是空的?您没有检查isEmpty()
那个列表,仅针对其中包含的列表。