【发布时间】:2015-05-22 14:28:28
【问题描述】:
我有一个带页脚的ListView(简单的LinearLayout 有一个TextView 和一个ImageView),还有一个BaseAdapter 有2 个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)
...
如果我将 getViewTypeCount() 增加到 3,一切正常。
这是我第一次遇到此错误,在其他项目中,我的 BaseAdapters 具有更多 ViewTypes 以及页脚和页眉,并且在没有“增量黑客”的情况下可以正常工作。
编辑: BaseAdapter 代码:
@Override
public int getCount() {
return mItemsList.size();
}
@Override
public Object getItem(int position) {
return mItemsList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
if (mItemsList.get(position).getValue().equals(mContext.getString(R.string.stub))) {
return STUB;
}
return ITEM;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (getItemViewType(position) == ITEM) {
return itemView(position, convertView);
}
return stubView(convertView);
}
我在这里错过了什么?
谢谢。
【问题讨论】:
-
你能把你完整的适配器类贴在这里吗?
-
@Sajal 问题已更新
标签: java android android-listview indexoutofboundsexception baseadapter