3

我使用的是FragmentStatePagerAdapterViewPager,默認起始頁是0。我想我的,開始有些arbitary頁上,說5這是我如何顯示我ViewPager:防止ViewPager始終在位置0實例化片段?

viewPager.setAdapter(adapter); 
viewPager.setCurrentItem(viewNumber, true); 

然而,首先在默認位置(0)創建ViewPager,然後切換到我想要的位置(5)。所以我的片段按以下順序創建:0,1,4,5,6.

我不希望在0和1處創建碎片。我怎樣才能做到這一點?

+1

爲什麼不只是移動你想要加載到位置0的任何片段? – tyczj

+0

ViewPager是以前活動中列表的「詳細視圖」。我希望用戶能夠以與列表相同的順序遍歷ViewPager,但它應該以他們選擇的列表項目爲中心開始。我仍然希望他們能夠回頁和前進,並看到適當的項目。 –

回答

1

我該如何做到這一點?

ViewPager的源代碼複製到您的項目中,將其重構爲您自己的包,並修改適合的代碼。具體而言,您需要修改setAdapter()才能嘗試佈局或填充ViewPager,除非您通過某種新方法(例如,lisaWouldLikeYouToPopulateNowKThxBye())手動請求該方法。

可能能夠與子類ViewPager和壓倒一切的populate()脫身不實際做它基於一些標誌,你在你的子類持有,這樣就可以避免從PagerAdapter填充,直到你setCurrentItem()電話後工作。

或者,就讓它一個人留下吧。目前尚不清楚您爲此所感受到的好處,更不用說他們是否值得您的分叉ViewPager的維修頭痛。

+0

感謝您的回答。我認爲這可能是一個相當常見的請求 - 例如,當使用帶有製表符的片段時可以這樣做。我猜不會。 –

+0

@Lisa:「例如,在使用帶有標籤的片段時可以做到這一點 - 」不是我所知道的。 – CommonsWare