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);
        }
    }

これは、私が探している無限のスクロールを得るにはうまく機能しますが、呼び出されるたびに 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);
    }
}
4

1 に答える 1