我有View分页器,其中有1000个项目放在片段中。当片段创建时,我需要将viewPager移动到第600个项目。下面是代码我是如何实际做到的,但需要一些时间。
mPager.post(new Runnable() {
public void run() {
mPager.setCurrentItem(600, false);
}
});
是否有某种方法可以使其异步/平滑?
感谢。
答案 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会在不再需要时删除该片段,并在需要时将其创建回来。此适配器中的索引不正确。