我的ListView
有一个页脚(简单LinearLayout
有TextView
和ImageView
),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()
我在这里想念的是什么? 谢谢。
答案 0 :(得分:3)
getViewTypeCount()
用于实例化convertView
的数组,由getItemViewType()
的返回值索引,并且像每个数组一样,它是0-based
。因此,getItemViewType()
无法返回大于或等于getViewTypeCount()
值的值。 getViewTypeCount() == 2
可能唯一的值是0
和1
答案 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你的回答提醒我查看我的类型"索引"值。