adapter 中多个布局数组下标越界
崩溃日志如下:
# main(1)
java.lang.ArrayIndexOutOfBoundsException
length=2; index=2
解析原始
|
1
android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6842)
| |
|
2
android.widget.ListView.layoutChildren(ListView.java:1647)
| |
|
3
android.widget.AbsListView.onLayout(AbsListView.java:2168)
| |
|
4
android.view.View.layout(View.java:16754)
| |
|
5
android.view.ViewGroup.layout(ViewGroup.java:5462)
| |
|
6
android.widget.FrameLayout.layoutChildren(FrameLayout.java:338)
| |
|
7
android.widget.FrameLayout.onLayout(FrameLayout.java:273)
| |
|
8
android.view.View.layout(View.java:16754)
| |
|
9
android.view.ViewGroup.layout(ViewGroup.java:5462)
| |
|
10
android.widget.LinearLayout.setChildFrame(LinearLayout.java:1764)
| |
|
11
android.widget.LinearLayout.layoutVertical(LinearLayout.java:1607)
| |
|
12
android.widget.LinearLayout.onLayout(LinearLayout.java:1516)
| |
|
13
android.view.View.layout(View.java:16754)
| |
|
14
android.view.ViewGroup.layout(ViewGroup.java:5462)
| |
|
15
android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
| |
|
16
android.view.View.layout(View.java:16754)
| |
|
17
android.view.ViewGroup.layout(ViewGroup.java:5462)
| |
|
18
android.support.v4.view.ViewPager.onLayout(ViewPager.java:1795)
| |
|
19
android.view.View.layout(View.java:16754)
| |
|
20
android.view.ViewGroup.layout(ViewGroup.java:5462)
| |
|
21
android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
| |
|
22
android.view.View.layout(View.java:16754)
| |
|
23
android.view.ViewGroup.layout(ViewGroup.java:5462)
| |
|
24
android.widget.FrameLayout.layoutChildren(FrameLayout.java:338)
| |
|
25
android.widget.FrameLayout.onLayout(FrameLayout.java:273)
| |
|
26
android.view.View.layout(View.java:16754)
| |
|
27
android.view.ViewGroup.layout(ViewGroup.java:5462)
| |
|
28
android.widget.LinearLayout.setChildFrame(LinearLayout.java:1764)
| |
|
29
android.widget.LinearLayout.layoutVertical(LinearLayout.java:1607)
| |
|
30
android.widget.LinearLayout.onLayout(LinearLayout.java:1516)
| |
|
31
android.view.View.layout(View.java:16754)
| |
|
32
android.view.ViewGroup.layout(ViewGroup.java:5462)
| |
|
33
android.widget.FrameLayout.layoutChildren(FrameLayout.java:338)
| |
|
34
android.widget.FrameLayout.onLayout(FrameLayout.java:273)
| |
|
35
android.view.View.layout(View.java:16754)
| |
|
36
android.view.ViewGroup.layout(ViewGroup.java:5462)
| |
|
37
android.widget.LinearLayout.setChildFrame(LinearLayout.java:1764)
| |
|
38
android.widget.LinearLayout.layoutVertical(LinearLayout.java:1607)
| |
|
39
android.widget.LinearLayout.onLayout(LinearLayout.java:1516)
| |
|
40
android.view.View.layout(View.java:16754)
| |
|
41
android.view.ViewGroup.layout(ViewGroup.java:5462)
| |
|
42
android.widget.FrameLayout.layoutChildren(FrameLayout.java:338)
| |
|
43
android.widget.FrameLayout.onLayout(FrameLayout.java:273)
| |
|
44
com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2748)
| |
|
45
android.view.View.layout(View.java:16754)
| |
|
46
android.view.ViewGroup.layout(ViewGroup.java:5462)
| |
|
47
android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2226)
| |
|
48
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1983)
| |
|
49
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1139)
| |
|
50
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6238)
| |
|
51
android.view.Choreographer$CallbackRecord.run(Choreographer.java:884)
| |
|
52
android.view.Choreographer.doCallbacks(Choreographer.java:696)
| |
|
53
android.view.Choreographer.doFrame(Choreographer.java:631)
| |
|
54
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:870)
| |
|
55
android.os.Handler.handleCallback(Handler.java:743)
| |
|
56
android.os.Handler.dispatchMessage(Handler.java:95)
| |
|
57
android.os.Looper.loop(Looper.java:150)
| |
|
58
android.app.ActivityThread.main(ActivityThread.java:5621)
| |
|
59
java.lang.reflect.Method.invoke(Native Method)
| |
|
60
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
| |
|
61
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
|
我adapter中有两个布局,分别把item设置成 1 和 2 ,然后在 getViewTypeCount 中返回2(有两个布局)。
感觉完全没有问题,但是为什么会这样呢?
后来发现:
getViewTypeCount() 的返回值必须要大于getItemViewType()的返回值。
具体为什么这样我也不清楚,反正这样写就不会出问题,哈哈哈哈,如果有哪位大神知道的话可以给我留言哦。
所以,我们如果以后要写多布局的adapter的话,type一定要从 0 开始。
本文探讨了Android中Adapter使用多个布局时遇到的数组下标越界问题,并分享了一个有效的解决方案,即确保getViewTypeCount()的返回值大于getItemViewType()的返回值。
967

被折叠的 条评论
为什么被折叠?



