at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:)

  • 错误提示
  • 错误原因
  • 参考链接

错误提示:

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

时间: 2024-11-08 05:30:37

at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:)的相关文章

解决 android.view.ViewGroup$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams

错误日志1: 06-13 10:55:50.410: E/KVLog(1129): Error info:java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams06-13 10:55:50.423: E/KVLog(1129): Cause Result:java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams06-13 10:

NullPointerException at android.widget.AbsListView.obtainView at android.widget.ListView.makeAndAddView

使用ExpandableListView的时候,报如下错.网上搜索发现原来是在CommonNumberQueryAdapter的getGroupView()方法里返回的是null,注意细节哦!!! 12-19 17:32:41.822: E/AndroidRuntime(1894): FATAL EXCEPTION: main12-19 17:32:41.822: E/AndroidRuntime(1894): java.lang.NullPointerException12-19 17:32:

android.view.ViewGroup$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams

LinearLayout layout = (LinearLayout) mInflater.inflate( R.layout.cell_check_item, null); LinearLayout.LayoutParams param = new LinearLayout.LayoutParams( UPDeviceInfo.getDeviceWidth(), LayoutParams.WRAP_CONTENT); rootLayout.addView(convertView, param

安卓出现错误: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText

Caused by: Java.lang.ClassCastException: Android.widget.TextView cannot be cast to android.widget.EditText 该种报错信息,检查代码确定无误后,若还是出现这种错误,则可通过以下这个办法进行解决: 点中该项目-->点击Project-->clean   清理下再重新运行该项目,然后就解决了

关于java.lang.NoSuchMethodError: android.widget.RelativeLayout.setBackground的解决办法

今天用一个安卓4.0.4版本的手机测试手上的项目,发现logcat弹出这样一个提示“java.lang.NoSuchMethodError: android.widget.RelativeLayout.setBackground”,然后这个页面因为没有做异常捕获处理,所以直接导致系统崩溃了.检查后发现里面设置背景用的是setBackground()方法,而该方法是API16才开始有的.遇到这样的情况,将这个方法更改为setBackgroundDrawable()就可以了.

java.lang.ClassCastException:android.widget.Button cannot be cast to android.widget.ImageView

今天遇到一个错误也不知道怎么回事,上网搜了一下: 出现的问题是:java.lang.ClassCastException:android.widget.Button cannot be cast to android.widget.ImageView 解决的方法是: Clean 你的项目.(点击eclipse上面的project然后clean然后选择你要clean的项目) 修改一个xml文件,然后保存(稍微动一下,保存) 删除 R 文件. (build project 之后会自动生成).

java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.L(转)

09-09 10:19:59.979: E/AndroidRuntime(2767): FATAL EXCEPTION: main09-09 10:19:59.979: E/AndroidRuntime(2767): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams09-09 10:19:59.97

android布局太深导致的 java.lang.StackOverflowError

E/AndroidRuntime( 1900): java.lang.StackOverflowError E/AndroidRuntime( 1900):     at android.graphics.Canvas.drawText(Canvas.java:1269) E/AndroidRuntime( 1900):     at android.text.Layout.draw(Layout.java:337) E/AndroidRuntime( 1900):     at android

Android Widget 小部件(四---完结) 使用ListView、GridView、StackView、ViewFlipper展示Widget

官方有话这样说: A RemoteViews object (and, consequently, an App Widget) can support the following layout classes: FrameLayout LinearLayout RelativeLayout And the following widget classes: AnalogClock Button Chronometer ImageButton ImageView ProgressBar Text