ListView Footer导致ArrayIndexOutOfBoundsException

时间:2015-05-22 14:28:29

标签: java android android-listview indexoutofboundsexception baseadapter

我的ListView有一个页脚(简单LinearLayoutTextViewImageView),BaseAdapter有2 { {1}}类型:

View

我的问题是当我将列表滚动到底部并到达页脚时,因为抛出了这个异常:

@Override
public int getViewTypeCount() {
    return 2;
}

如果我将java.lang.ArrayIndexOutOfBoundsException: length=2; index=2 at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6444) at android.widget.AbsListView.trackMotionScroll(AbsListView.java:4993) at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:4197) ... 增加到3,一切正常 这是我第一次遇到这个错误,在其他项目中我使用了更多ViewTypes的BaseAdapter以及页脚和标题,并且没有"增加hack"它可以正常工作。

编辑: BaseAdapter 代码:

getViewTypeCount()

我在这里想念的是什么? 谢谢。

2 个答案:

答案 0 :(得分:3)

getViewTypeCount()用于实例化convertView的数组,由getItemViewType()的返回值索引,并且像每个数组一样,它是0-based。因此,getItemViewType()无法返回大于或等于getViewTypeCount()值的值。 getViewTypeCount() == 2可能唯一的值是01

答案 1 :(得分:1)

我得到了它!我有:

private static final int ITEM = 1;
private static final int STUB = 2;

而不是

private static final int ITEM = 0;
private static final int STUB = 1;

谢谢@Blackbelt你的回答提醒我查看我的类型"索引"值。