0

我有一个无限滚动的 ViewPager。为此,我有 5 个项目 (0,1,2,3,4)。休息时,我总是在选项卡 2。在 onPageScrollStateChanged 返回 SCROLL_STATE_IDLE 后,我更新数据源以将当前项放在位置 2,然后将 ViewPager 的当前项设置为 2,如下所示:

    @Override
    public void onPageScrollStateChanged(int state) {
        if (state == ViewPager.SCROLL_STATE_IDLE) {
            populateForecastFragmentsArray();
            mPager.setCurrentItem(CENTER_PAGE_INDEX, false);
        }
    }

这非常适合获得我正在寻找的无限滚动,但是每次setCurrentItem()调用 PagerTabStrip 都会闪烁。

是否有另一种方法可以在不使用 setCurrentItem 的情况下设置当前项目?有没有更好的方法来处理无限滚动?

我已经确定闪烁发生在 setCurrentItem 期间,而不是 populateForecastFragmentsArray(),但为了完整起见,这里是 populateForecastFragmentsArray() 的代码:

public void populateForecastFragmentsArray () {
    mForecastFragmentArrayList.clear();
    for (int i = 0; i < mPageAdapter.getCount(); i++) {
        ForecastFragment fragment = new ForecastFragment();
        int offset = i - CENTER_PAGE_INDEX;
        fragment.calendar = (Calendar)mDisplayedDate.clone();
        fragment.calendar.add(Calendar.DAY_OF_YEAR, offset);

        mForecastFragmentArrayList.add(fragment);
    }
}
4

1 回答 1

0

遇到了同样的问题,在我的情况下,我有两个几乎相同的课程,而这个问题只是在一种情况下,在另一种情况下一切正常。没有找到任何关于为什么会发生这种情况的线索,但在这里的评论中发现了一个 hack:http: //thehayro.blogspot.ru/2013/09/infiniteviewpager-infinite-paging.html 简而言之:

于 2015-04-27T10:44:31.623 回答