4

我是 Android 编程的新手,这是我在这个网站上的第一个问题。我花了很多时间寻找这个问题,但没有找到适合我的情况的答案。

我在 ViewPager 中有两个页面,一个用于当前页面,一个用于下一页。当第二个片段显示时,我将其索引设置为 0,删除第一个片段并创建一个新片段作为第二个片段的替换。这是我的代码。

mPager.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int pageSelected) {
        }

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            if (position  == 1) {
                currentQuestFr = nextQuestFr;
                nextQuestFr = newQuest();
                mPager.setCurrentItem(0, false);
                mPagerAdapter.notifyDataSetChanged();
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

和适配器

private class QuestPagerAdapter extends FragmentStatePagerAdapter {

    public QuestPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        if (position == 0) return currentQuestFr;
        else return nextQuestFr;
    }

    @Override
    public int getCount() {
        return NUM_PAGES;
    }

    @Override
    public int getItemPosition(Object object)
    {
        return POSITION_NONE;
    }
}

该代码运行良好,但notifyDataSetChanged()似乎不需要那样刷新我的视图。它让用户有点恼火。有没有办法在不重绘视图的情况下刷新适配器,或者以其他方式达到相同的目的?非常感谢

4

1 回答 1

0

您是否希望它以一种应该首先加载所有数据然后在某些事件上手动重绘视图的方式工作?然后您可以使用 mPager.setOffscreenPageLimit(n) 其中 n 是您在 mPager 中的页数。这将在加载时绘制所有页面。

于 2013-05-03T04:41:17.537 回答