3

我正在使用来自 android.support.v4.view.ViewPager 库的 ViewPager 和 PagerAdapter,如果我的当前项目也是零号,我想删除零号项目如果列表。我可以删除它而不会出现任何错误,但屏幕不会立即刷新。如果我转到第 2 项并返回,则第 0 项将被更新。任何人都可以解决这个问题吗?

我正在使用下面的删除功能:

public View removePage(int position) {
        if ((position < 0) || (position >= getSize()) || (getSize()<=1)) {
            return null;
        } else {
            if (position == mPager.getCurrentItem()) {
                if(position == (getSize()-1)) {
                    mPager.setCurrentItem(position-1);
                } else if (position == 0){
                    mPager.setCurrentItem(1);
                }
            }
            View tempView = myPagerAdapter.mListViews.remove(position);
            myPagerAdapter.notifyDataSetChanged();
            return tempView;
        }
    }

我猜这个问题应该发生在函数调用中

setCurrentItemInternal(newCurrItem, false, true);

在 ViewPager.java 中,newCurrItem 的参数为“0”,mCurItem 的参数为“0”。此外,问题应该出在 completeScroll(); 或 scrollTo(destX, 0); 在 setCurrentItemInternal() 结束时;

4

1 回答 1

0

来自http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int )

公共无效 setOffscreenPageLimit (int 限制)

设置应保留到处于空闲状态的视图层次结构中当前页面的任一侧的页面数。超出此限制的页面将在需要时从适配器重新创建。

这是作为优化提供的。如果您事先知道需要支持的页面数量或在页面上设置了延迟加载机制,则调整此设置可以提高分页动画和交互的感知流畅度。如果您有少量页面 (3-4) 可以同时保持活动状态,那么在用户页面来回切换时,新创建的视图子树的布局将花费更少的时间。

您应该将此限制保持在较低水平,尤其是在您的页面具有复杂布局的情况下。此设置默认为 1。

参数 limit 在空闲状态下将保留多少页屏幕外。

OffScreenPageLimit设置为零,然后删除该项目。您可以再次将OffScreenPageLimit设置为 1(默认值)。

于 2012-11-22T15:55:21.583 回答