android.widget.AbsListView$RecycleBin.addScrapView

来源:互联网 发布:孤岛惊魂3优化设置 编辑:程序博客网 时间:2024/06/05 07:52


adapter 中多个布局数组下标越界


崩溃日志如下:

# main(1)

java.lang.ArrayIndexOutOfBoundsException

length=2; index=2

解析原始
1android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6842)
2android.widget.ListView.layoutChildren(ListView.java:1647)
3android.widget.AbsListView.onLayout(AbsListView.java:2168)
4android.view.View.layout(View.java:16754)
5android.view.ViewGroup.layout(ViewGroup.java:5462)
6android.widget.FrameLayout.layoutChildren(FrameLayout.java:338)
7android.widget.FrameLayout.onLayout(FrameLayout.java:273)
8android.view.View.layout(View.java:16754)
9android.view.ViewGroup.layout(ViewGroup.java:5462)
10android.widget.LinearLayout.setChildFrame(LinearLayout.java:1764)
11android.widget.LinearLayout.layoutVertical(LinearLayout.java:1607)
12android.widget.LinearLayout.onLayout(LinearLayout.java:1516)
13android.view.View.layout(View.java:16754)
14android.view.ViewGroup.layout(ViewGroup.java:5462)
15android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
16android.view.View.layout(View.java:16754)
17android.view.ViewGroup.layout(ViewGroup.java:5462)
18android.support.v4.view.ViewPager.onLayout(ViewPager.java:1795)
19android.view.View.layout(View.java:16754)
20android.view.ViewGroup.layout(ViewGroup.java:5462)
21android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
22android.view.View.layout(View.java:16754)
23android.view.ViewGroup.layout(ViewGroup.java:5462)
24android.widget.FrameLayout.layoutChildren(FrameLayout.java:338)
25android.widget.FrameLayout.onLayout(FrameLayout.java:273)
26android.view.View.layout(View.java:16754)
27android.view.ViewGroup.layout(ViewGroup.java:5462)
28android.widget.LinearLayout.setChildFrame(LinearLayout.java:1764)
29android.widget.LinearLayout.layoutVertical(LinearLayout.java:1607)
30android.widget.LinearLayout.onLayout(LinearLayout.java:1516)
31android.view.View.layout(View.java:16754)
32android.view.ViewGroup.layout(ViewGroup.java:5462)
33android.widget.FrameLayout.layoutChildren(FrameLayout.java:338)
34android.widget.FrameLayout.onLayout(FrameLayout.java:273)
35android.view.View.layout(View.java:16754)
36android.view.ViewGroup.layout(ViewGroup.java:5462)
37android.widget.LinearLayout.setChildFrame(LinearLayout.java:1764)
38android.widget.LinearLayout.layoutVertical(LinearLayout.java:1607)
39android.widget.LinearLayout.onLayout(LinearLayout.java:1516)
40android.view.View.layout(View.java:16754)
41android.view.ViewGroup.layout(ViewGroup.java:5462)
42android.widget.FrameLayout.layoutChildren(FrameLayout.java:338)
43android.widget.FrameLayout.onLayout(FrameLayout.java:273)
44com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2748)
45android.view.View.layout(View.java:16754)
46android.view.ViewGroup.layout(ViewGroup.java:5462)
47android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2226)
48android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1983)
49android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1139)
50android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6238)
51android.view.Choreographer$CallbackRecord.run(Choreographer.java:884)
52android.view.Choreographer.doCallbacks(Choreographer.java:696)
53android.view.Choreographer.doFrame(Choreographer.java:631)
54android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:870)
55android.os.Handler.handleCallback(Handler.java:743)
56android.os.Handler.dispatchMessage(Handler.java:95)
57android.os.Looper.loop(Looper.java:150)
58android.app.ActivityThread.main(ActivityThread.java:5621)
59java.lang.reflect.Method.invoke(Native Method)
60com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
61com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)


我adapter中有两个布局,分别把item设置成 1 和 2 ,然后在  getViewTypeCount 中返回2(有两个布局)。

感觉完全没有问题,但是为什么会这样呢?

后来发现:

getViewTypeCount()  的返回值必须要大于getItemViewType()的返回值。

具体为什么这样我也不清楚,反正这样写就不会出问题,哈哈哈哈,如果有哪位大神知道的话可以给我留言哦。

所以,我们如果以后要写多布局的adapter的话,type一定要从 0 开始。







阅读全文
0 0
原创粉丝点击