0

7 ページを表示するために viewpager を使用しています。また、viewpagerindicator lib を使用して、ページが viewpager にあるのと同じ数の円を取得しています。

ビューページャーでページをスクロールすると、ページ1、ページャー2 ...にいるユーザーを表示したい. それぞれ。ビューページャーでページをスクロールするとき。

私は pagedapter の getcurrentitem() を使用して、現在のページを取得しています..しかし、正しい結果が得られません。

私は何か間違ったことをしていますか?viewpager で正確なページ番号を数えるには?

私は2つの方法を試しました。初め

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

        return scScreens[position];
    }

各フラグメントで、ページ番号を書きました。そのため、それぞれのフラグメントが表示された場合、ページ番号が変更されます。(非常に悪い方法) 7 つのクラス (最大ページ数) を作成する必要があります。

2番

        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 に答える