0

我正在使用 viewpager 来显示 7 页。我还使用 viewpagerindicator lib 来获取与 viewpager 中的页面一样多的圆圈。

当我在 viewpager 中滚动页面时,我想向用户显示您在第 1 页,第 2 页 ...。分别。当他在 viewpager 中滚动页面时。

我正在使用 pagedapter 的 getcurrentitem() 来获取我所在的页面。但它并没有给我正确的结果。

我做错了什么吗?如何计算 viewpager 中的确切页码?

我尝试了两种方法。第一的

    scScreens = new Fragment[mSessionManager.getPosScreens()];
    @Override
    public Fragment getItem(int position) {

        return scScreens[position];
    }

在每个片段中,我写了页码。这样,如果相应的片段显示更改页码。(非常糟糕的方式)我必须创建 7 个类(最大页数)。

第二

        pagestextview.setText(getCurrentItem()+1);

它在第一次滚动时工作,但在滚动回第一次时会产生意想不到的结果

4

1 回答 1

0

我可以推荐 FragmentStateAdapter,因为它可以很好地处理片段的创建/销毁。

        mViewPager = new ViewPager(this);
        mViewPager.setId(R.id.viewPager);
        setContentView(mViewPager);

        final FragmentManager fm = getSupportFragmentManager();

        mViewPager.setAdapter(new FragmentStatePagerAdapter(fm) {

            @Override
            public int getCount() {
                return mContactList.size();
            }

            @Override
            public Fragment getItem(int pos) {

                    Contact mContact = mContactList.get(pos);
                    int mCurrentPosition = mContact.getPosition();
                    return ContactDetailsFragment.newInstance(mCurrentPosition);                    
            }
        });

        //loads the proper fragment on its meant-to-be position into the ViewPager
        mViewPager.setCurrentItem(position);
于 2013-08-14T09:09:12.897 回答