Listview与TitlepageIndicator Strage indexoutofbound异常

时间:2013-07-31 10:44:57

标签: android listview indexoutofboundsexception

我在我的视图寻呼机中有listview,我使用过TitlePageIndicator。一切似乎都运行正常,但由于IndexOutOfBound异常而随机崩溃。我不确定是什么原因造成的。下面我附上了它的堆栈跟踪。我还发现了this link,并提到它已在2.1.0中修复。但我使用的是2.3.1版本。

`

> 07-31 15:32:10.242: W/System.err(6720): java.lang.IndexOutOfBoundsException: Invalid index 4, size is 1
07-31 15:32:10.247: W/System.err(6720):     at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
07-31 15:32:10.247: W/System.err(6720):     at java.util.ArrayList.get(ArrayList.java:304)
07-31 15:32:10.247: W/System.err(6720):     at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:225)
07-31 15:32:10.247: W/System.err(6720):     at android.widget.AbsListView.obtainView(AbsListView.java:2452)
07-31 15:32:10.247: W/System.err(6720):     at android.widget.ListView.makeAndAddView(ListView.java:1775)
07-31 15:32:10.247: W/System.err(6720):     at android.widget.ListView.fillDown(ListView.java:678)
07-31 15:32:10.247: W/System.err(6720):     at android.widget.ListView.fillSpecific(ListView.java:1336)
07-31 15:32:10.247: W/System.err(6720):     at android.widget.ListView.layoutChildren(ListView.java:1606)
07-31 15:32:10.247: W/System.err(6720):     at android.widget.AbsListView.onLayout(AbsListView.java:2303)
07-31 15:32:10.247: W/System.err(6720):     at android.view.View.layout(View.java:14063)
07-31 15:32:10.247: W/System.err(6720):     at android.view.ViewGroup.layout(ViewGroup.java:4655)
07-31 15:32:10.247: W/System.err(6720):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
07-31 15:32:10.247: W/System.err(6720):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
07-31 15:32:10.247: W/System.err(6720):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
07-31 15:32:10.247: W/System.err(6720):     at android.view.View.layout(View.java:14063)
07-31 15:32:10.247: W/System.err(6720):     at android.view.ViewGroup.layout(ViewGroup.java:4655)
07-31 15:32:10.247: W/System.err(6720):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
07-31 15:32:10.247: W/System.err(6720):     at android.view.View.layout(View.java:14063)
07-31 15:32:10.247: W/System.err(6720):     at android.view.ViewGroup.layout(ViewGroup.java:4655)
07-31 15:32:10.247: W/System.err(6720):     at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1520)
07-31 15:32:10.247: W/System.err(6720):     at android.view.View.layout(View.java:14063)
07-31 15:32:10.247: W/System.err(6720):     at android.view.ViewGroup.layout(ViewGroup.java:4655)
07-31 15:32:10.247: W/System.err(6720):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
07-31 15:32:10.252: W/System.err(6720):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
07-31 15:32:10.252: W/System.err(6720):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
07-31 15:32:10.252: W/System.err(6720):     at android.view.View.layout(View.java:14063)
07-31 15:32:10.252: W/System.err(6720):     at android.view.ViewGroup.layout(ViewGroup.java:4655)
07-31 15:32:10.252: W/System.err(6720):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
07-31 15:32:10.252: W/System.err(6720):     at android.view.View.layout(View.java:14063)
07-31 15:32:10.252: W/System.err(6720):     at android.view.ViewGroup.layout(ViewGroup.java:4655)
07-31 15:32:10.252: W/System.err(6720):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
07-31 15:32:10.252: W/System.err(6720):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
07-31 15:32:10.257: W/System.err(6720):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
07-31 15:32:10.257: W/System.err(6720):     at android.view.View.layout(View.java:14063)
07-31 15:32:10.257: W/System.err(6720):     at android.view.ViewGroup.layout(ViewGroup.java:4655)
07-31 15:32:10.257: W/System.err(6720):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
07-31 15:32:10.257: W/System.err(6720):     at android.view.View.layout(View.java:14063)
07-31 15:32:10.257: W/System.err(6720):     at android.view.ViewGroup.layout(ViewGroup.java:4655)
07-31 15:32:10.257: W/System.err(6720):     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2017)
07-31 15:32:10.257: W/System.err(6720):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1838)
07-31 15:32:10.257: W/System.err(6720):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1131)
07-31 15:32:10.257: W/System.err(6720):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4611)
07-31 15:32:10.257: W/System.err(6720):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
07-31 15:32:10.257: W/System.err(6720):     at android.view.Choreographer.doCallbacks(Choreographer.java:555)
07-31 15:32:10.257: W/System.err(6720):     at android.view.Choreographer.doFrame(Choreographer.java:525)
07-31 15:32:10.257: W/System.err(6720):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
07-31 15:32:10.257: W/System.err(6720):     at android.os.Handler.handleCallback(Handler.java:615)
07-31 15:32:10.257: W/System.err(6720):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-31 15:32:10.257: W/System.err(6720):     at android.os.Looper.loop(Looper.java:137)
07-31 15:32:10.257: W/System.err(6720):     at android.app.ActivityThread.main(ActivityThread.java:4898)
07-31 15:32:10.257: W/System.err(6720):     at java.lang.reflect.Method.invokeNative(Native Method)
07-31 15:32:10.257: W/System.err(6720):     at java.lang.reflect.Method.invoke(Method.java:511)
07-31 15:32:10.257: W/System.err(6720):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
07-31 15:32:10.257: W/System.err(6720):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
07-31 15:32:10.257: W/System.err(6720):     at dalvik.system.NativeStart.main(Native Method)

`

2 个答案:

答案 0 :(得分:3)

在没有看到某些代码的情况下查明确切问题有点困难,但让我尝试一种有根据的猜测。

您是否有可能通过在ListView上手动调用getAdapter()来访问适配器?

如果是这样,当您最初设置适配器时,不要调用getAdapter(),而是在新的类变量中保留对它的引用。然后,当您需要它时,使用新变量访问它。

答案 1 :(得分:0)

我刚刚解决了与你的问题类似的问题。在我的情况下,这是因为我在asynctask运行之前就清除了我的arraylist。所以我说的是当我滚动我的列表视图时,我的数组列表为空,让适配器知道arraylist已更改并且为空我必须先通知它。


arraylistTimeline.clear(); adapterTimeline.notifyDataSetChanged(); < ---当错误时不在这里                                              像你提到的那样出现

TimelineRestoURL tURL = new TimelineRestoURL(); tURL.execute();


就像那样。希望它有所帮助。