我有一个无限滚动的 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);
}
}