at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:)
2015-11-07 12:20
585 查看
错误提示:
at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:) 在Android中给ListView写多个不同的item布局的时候,我遇到了一个标题中的数组越界错误,其实这个错误之前我已经遇到过,但这次我还是重新认识了一下这个错误的产生原因。
错误原因:
给ListView编写多个item条目的时候,我们需要在Adapter适配器中重写 getItemViewType() 和 getViewTypeCoun() 两个方法,我们通常在getItemViewType() 中给具体的item做区分(这两个方法的返回值类型都为 int 类型),以便在 getView() 加载不同的layout 布局,而在getViewTypeCount() 方法中定义一共有多少种不同的item,导致标题中的错误出现的原因,可以使用 StackOverflow 中的一句话来解释:“The
item view type you are returning from getItemViewType() is >= getViewTypeCount().”;中文意思就是 getViewTypeCount() 的值必须大于getItemViewType() 的值,反之,则会出现标题中的错误,通常,我们从 1 开始给不同的item设置 Type 类型,举个栗子来说,我们设置了 Type为1
和Type为2的item类型,然后在 getViewTypeCount() 方法中返回了 2, 这样的话 getViewTypeCount() 的值就和Type为2的时候返回值相等了,于是出现了标题所示的数据越界错误,通常我们把 Type 值设置为从0开始计数即可保证最大值的 Type 类型也不会大于 getViewTypeCount() 方法的返回值,getItemViewType() 源码中的注释也提醒我们:”Integers must be in the range 0 to {@link #getViewTypeCount}
- 1“。
参考链接:
http://lmbj.net/blog/arrayindexoutofboundsexception/ http://www.cnblogs.com/xitang/p/3197158.html
相关文章推荐
- Android Security Model
- Android SDK Manager
- 使用html写一个android关于界面,事情原来可以如此简单
- 【Android】Fragment真正意义上的onResume和onPause
- Android内的生命周期整理
- Android数据库(八)之使用LitePal聚合函数
- Eclipse Android项目 为控件添加了Id,但是在Java代码中提示xxx cannot be resolved or is not a field
- Android数据库(七)之LitePal查询艺术
- Android Studio创建项目
- Android数据库(六)之LitePal的修改和删除
- Android数据库(五)之LitePal的存储操作
- Android数据库(四)之使用LitePal建立关联表
- Android的Style的使用
- Android数据库(三)之使用LitePal升级表
- Android之自定义标题
- Android数据库(二)之创建表和LitePal的基本用法
- Android数据库(一)之SQLite命令
- Android应用性能优化实践
- 【Android实战】播放assets或者raw文件夹下的视频文件
- AndroidSweetSheet