無限にスクロールする 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);
}
}
これは、私が探している無限のスクロールを得るにはうまく機能しますが、呼び出されるたびに PagerTabStrip がちらつきsetCurrentItem()
ます。
setCurrentItem を使用せずに現在のアイテムを設定する別の方法はありますか? 無限スクロールを処理するより良い方法はありますか?
populateForecastFragmentsArray() ではなく、setCurrentItem 中にちらつきが発生すると判断しましたが、完成させるために、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);
}
}