dataSetChanged()时保持ViewPager的currentItem

时间:2014-02-27 14:04:28

标签: android android-fragments android-viewpager commonsware-cwac

我正在使用android.support.v4.view.ViewPagercwac-pager动态添加或删除片段。此ViewPagerPageMarginDISAPPEARINGCHANGE_APPEARING的动态CHANGE_DISAPPEARINGLayoutTransition(对于API> = 11)也有动画效果。在布局中,点击时会Button次调用mPagerAdapter.insert(pageDescriptor, mViewPager.getCurrentItem())。当我点击它时,mViewPager的位置会自动增加,因此新页面会显示在当前页面的左侧。但我想让新页面显示在屏幕的中心。

我查看了ViewPager code,我认为这部分导致了问题:

void dataSetChanged() {
    ...
    for (int i = 0; i < mItems.size(); i++) {
        final ItemInfo ii = mItems.get(i);
        final int newPos = mAdapter.getItemPosition(ii.object);
        ...
        if (ii.position != newPos) {
            if (ii.position == mCurItem) {
                // Our current item changed position. Follow it.
                newCurrItem = newPos;
            }

            ii.position = newPos;
            needPopulate = true;
        }
        ...
    }
    ...
}

理想情况是:

  1. 点击添加按钮
  2. notifyDataSetChanged()在未更改mViewPager.getCurrentItem()
  3. 的情况下进行了调用
  4. CHANGE_APPEARING
  5. 的动画
  6. 新页面显示在屏幕中央

0 个答案:

没有答案