2013-07-31 44 views
1

我在我的視圖pager中有listview,我已經使用TitlePageIndicator。一切似乎工作正常,但隨機由於IndexOutOfBound異常崩潰。我不確定它的原因是什麼。下面我附上了它的堆棧跟蹤。我還發現this link和它提到,這已被固定在2.1.0。但我使用的是2.3.1版本。Listview with TitlepageIndicator Strage indexoutofbound exception

`

> 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) 

` 
+0

放一些代碼行,你認爲錯誤可能在哪裏。 – Nizam

+0

@Nizam我們可以在這裏聊聊嗎? – Dinash

+0

在ListView上定義了任何頁眉或頁腳 - 通過addHeaderView()或addFooterView()添加? – talkol

回答

3

這是一個有點難以確定您的具體問題,沒有看到一些代碼,但讓我嘗試一個受過教育的猜測。

是否有機會通過在ListView上手動調用getAdapter()訪問適配器?

如果是這樣,而不是調用getAdapter(),而是在初始設置適配器時,請在新的類變量中引用它。然後,當你需要它時,使用你的新變量訪問它。

+0

嗨,是的,我有腳註添加到我的列表視圖也是我打電話getAdapter獲得列表視圖的第一個元素時繪製的最後一項的確切高度。 – Dinash

+0

您是否嘗試避免使用我的建議調用getAdapter()?關於頁腳,您在設置適配器之前還是之後設置了它?嘗試之前/之後移動它,因爲我知道它會導致奇怪的怪癖,所以試試這兩種方法.. – talkol

+0

當然。我會嘗試。我認爲這個問題的主要原因是我想從後臺更新列表視圖。我想就此與你討論。你能幫忙嗎? – Dinash

0

我剛剛解決了與您的問題類似的問題。就我而言,這是因爲我在asynctask運行之前清除了我的數組列表。所以當我滾動列表視圖時,我的數組列表是空的,讓適配器知道數組列表已更改並且空,我必須先通知它。


arraylistTimeline.clear(); adapterTimeline.notifyDataSetChanged(); < --- was not here when error ocio like like you mentioned

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


就是這樣。希望能幫助到你。