at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:)
2016-05-18 18:32
756 查看
错误提示:
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
相关文章推荐
- FFmpeg for Android compiled with x264, libass, fontconfig, freetype and fribidi
- 踏破铁鞋无觅处,从AsyncTask学Android线程池
- 踏破铁鞋无觅处,从AsyncTask学Android线程池
- Android WebView重定向的网页无法goBack()的几个解决方案
- Android自定义AsyncTaskLoader的使用
- android 计算图片占用内存大小
- android自定义View,实现折线图(二)
- android中浮动菜单的基本实现
- Android 4层框架
- Android Notification通知栏的必备姿势
- android 跨应用程序广播发送接受
- Android Studio 中的 gradle 详解
- Android中getLocationOnScreen和getLocationInWindow
- 【Android进阶】Android 平滑图片加载和缓存库 Glide 使用详解
- Android 与 iOS 推送 Push Notification 的区别
- 65.Android 三大图片缓存原理、特性对比 (转)
- android activity之间传递bitmap
- Android Studio Gradle DSL method not found: 'android()' — Error(17,0)
- Android基础之drawable标签的使用下
- android:padding和android:margin的区别