Viewpager将当前项设置为异步

时间:2015-11-24 11:07:42

标签: android android-viewpager

我有View分页器,其中有1000个项目放在片段中。当片段创建时,我需要将viewPager移动到第600个项目。下面是代码我是如何实际做到的,但需要一些时间。

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

是否有某种方法可以使其异步/平滑?

感谢。

2 个答案:

答案 0 :(得分:4)

由于您无法触及后台线程中的UI元素,因此您可以采取的措施是一次加载更多项目,例如设置ViewPager.offScreenPageLimit()

例如我设置为100,但您可以设置更多并测试它:

mPager.setOffscreenPageLimit(100);

setCurrentItem()中使用true也可以使其更流畅。像:

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

答案 1 :(得分: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会在不再需要时删除该片段,并在需要时将其创建回来。此适配器中的索引不正确。