繁体   English   中英

带有setCurrentItem的Android ViewPager无法正常工作

[英]Android ViewPager with setCurrentItem not working properly

试图实现圆形视图传呼机(分页)。 在下面的代码段中, ViewpagersetCurrentItem方法设置为第一个位置(第0个索引),但始终移至第二个位置(第1个索引)。

下面是代码ViewPagerListener.java

 mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int positionOfView, float positionOffset, int positionOffsetPixels) {
                LogUtil.d(TAG, "START of onPageScrolled");
                mPosition = positionOfView;
                LogUtil.d(TAG, "COMPLETION of onPageScrolled");
            }

            @Override
            public void onPageSelected(int position) {
                LogUtil.d(TAG, "START of onPageSelected");
                //LogUtil.d(TAG, "Position :" + position + ", " + "Count of pager adapter :" + (mViewPager.getAdapter().getCount() - 1));
                LogUtil.d(TAG, "COMPLETION of onPageSelected");
            }

            @Override
            public void onPageScrollStateChanged(int state) {
                LogUtil.d(TAG, "START of onPageScrollStateChanged");
                if (state == ViewPager.SCROLL_STATE_DRAGGING && mPosition == 5) {
                    LogUtil.d(TAG, "trying to move to first");
                    currentItemInViewPager(0); //---> This is the position where I am setting the view to move back to start position(0th index) 

                }
                LogUtil.d(TAG, "COMPLETION of onPageScrollStateChanged");

            }
        });

@Override
    public void currentItemInViewPager(int index) {
        LogUtil.d(TAG, "START of currentItemInViewPager");
        if (index == 0) {
            if (getChildFragmentManager().findFragmentByTag("TAG_INTRO_FRAGMENT") != null) {
                LogUtil.d(TAG, "Removed");
                getChildFragmentManager().beginTransaction().remove(getChildFragmentManager().findFragmentByTag("TAG_INTRO_FRAGMENT")).commit();
            }
            mViewPager.setVisibility(View.VISIBLE);
            mTabLayout.setVisibility(View.VISIBLE);
            mPagerAdapter = new TutorialPagerAdapter(getChildFragmentManager(), this);
            mViewPager.setAdapter(mPagerAdapter);
            mTabLayout.setupWithViewPager(mViewPager, true);
        }
        mViewPager.setCurrentItem(index);
        LogUtil.d(TAG, "COMPLETION of currentItemInViewPager");
    }

如果我错过了任何东西,请告诉我

谢谢

在调用此方法之前,只需调用mViewPager.setCurrentItem(0);

如果要保留分页的动画,则需要替代寻呼机,或使用以下库:

https://github.com/antonyt/InfiniteViewPager

链接到参考:

ViewPager作为循环队列/包装

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM