2015-11-24 100 views
0

我有View分頁器1000個項目放在片段。當片段被創建時,我需要將viewPager移動到第600個項目。下面是代碼我是如何做到的,但需要一些時間。Viewpager設置當前項目async

mPager.post(new Runnable() { 
    public void run() { 
     mPager.setCurrentItem(600, false); 
    } 
}); 

是否有某種方法可以使其異步/平滑?

謝謝。

回答

2

由於您無法觸摸後臺線程中的UI元素,因此您可以通過設置ViewPager.offScreenPageLimit()來加速更多項目。

比如我設置100,但你可以設置更多然後測試:

mPager.setOffscreenPageLimit(100); 

還可以使用真正的setCurrentItem()能讓它更順暢。像:

mPager.post(new Runnable() { 
    public void run() { 
     mPager.setCurrentItem(600, true); 
    } 
}); 
+0

謝謝,但我試過設置更大的OffscreenPageLimit,但它比以前慢得多。還設置布爾值爲真不幫助很好,因爲有600個項目添加它只是跳到第600項。 – viliam

0

阿爾斯蘭回答很好。
此外,如果您使用FragmentStatePagerAdapter,請注意此處提及的問題https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=37990
當offScreenPageLimit()提到小於(NO_OF_ITEMS - 1)時,會發生這種情況。當用戶滑動時,會發生這些問題,因爲StatePagerAdapter在不再需要時刪除片段,並在需要時將其重新創建。在此適配器中,索引編制不正確。

+0

謝謝您的建議,但我不會更改項目順序,也不會檢測到任何問題。 – viliam

+0

然後,不用擔心.. – cgr

相關問題