我有一个无限滚动的ViewPager。为此,我有5个项目(0,1,2,3,4)。休息时,我总是在tab 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);
}
}
答案 0 :(得分:0)
遇到了同样的问题,在我的情况下,我有两个几乎相同的类,这个问题只在一个案例中,在另一个案例中,一切都很好。没有找到关于为什么会发生这种情况的线索,但在这里的评论中发现了一个黑客: http://thehayro.blogspot.ru/2013/09/infiniteviewpager-infinite-paging.html 简而言之: