Мерцающая полоса вкладки страницы при настройке просмотра текущего элемента пейджера

У меня бесконечно прокручивается 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? Есть ли лучший способ справиться с бесконечной прокруткой?

Я определил, что мерцание происходит во время 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);
    }
}

1 ответ

Получилась та же проблема, в моем случае у меня было два практически одинаковых класса, и эта проблема была только в одном случае, в другом все работало хорошо, как есть. Не нашел никаких подсказок о том, почему это происходит, но нашел взлом в комментариях здесь: http://thehayro.blogspot.ru/2013/09/infiniteviewpager-infinite-paging.html Короче говоря:

Другие вопросы по тегам