简体   繁体   English

android中的ViewPager到ViewPager2

[英]ViewPager to ViewPager2 in android

I am migration Viewpager to Viewpager2 and im facing 2 problems as of now,我正在将 Viewpager 迁移到 Viewpager2,目前我面临 2 个问题,

  1. how to show left and right items using Viewpager2 using Cardview(view horizontally)?如何使用 Cardview(水平视图)使用 Viewpager2 显示左右项目?
  2. pressing back, i have Viewpager2 last selected count saved that is index and in "on resume" im calling below code.按下后,我保存了 Viewpager2 上次选择的计数,即索引和“恢复时”,我正在调用下面的代码。

issue 2 using below code: mBinding.viewPager.setCurrentItem(index, true);问题 2 使用以下代码: mBinding.viewPager.setCurrentItem(index, true);

and its always going to index 0 if index choosed is 3 etc.如果选择的索引是 3 等,它总是会索引 0。

for issue 1 im using below code and im able to see left and right items on scroll also code :对于问题 1,我使用下面的代码,并且我能够在滚动时看到左右项目也代码:

viewPager.setClipToPadding(false);
viewPager.setClipChildren(false);
viewPager.setOffscreenPageLimit(1);

Do let me know whether its correct using viewpager2.请让我知道使用 viewpager2 是否正确。 Issue 2 still a problem, can any one help resolving both 1 ,2 issue in Viewpager2?问题 2 仍然是一个问题,有人可以帮助解决 Viewpager2 中的 1 ,2 问题吗?

current code:当前代码:

@Override
    public void onResume() {
        super.onResume();
        Log.e(TAG, "onResume");
        mBinding.viewPager.setCurrentItem(index, true);
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.e(TAG, "onPause");
        index = mBinding.viewPager.getCurrentItem();
    }

 mBinding.viewPager.setClipToPadding(false);
        mBinding.viewPager.setClipChildren(false);
        mBinding.viewPager.setOffscreenPageLimit(1);

 SlideAdapter = new SlideAdapter(this, List, Fragment.this);
        mBinding.viewPager.setAdapter(SlideAdapter);

        mBinding.viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                super.onPageScrolled(position, positionOffset, positionOffsetPixels);
            }

            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                Log.d(TAG, "onPageSelected:" + position);
                
            }

            @Override
            public void onPageScrollStateChanged(int state) {
                super.onPageScrollStateChanged(state);
            }
        });

Any help is appreciated!任何帮助表示赞赏!

Use this line to show items horizontal使用此行显示项目水平

viewPager2.orientation = ViewPager2.ORIENTATION_HORIZONTAL viewPager2.orientation = ViewPager2.ORIENTATION_HORIZONTAL

and Don't forget to unregister the OnPageChangeCallback并且不要忘记注销 OnPageChangeCallback

viewPager2.unregisterOnPageChangeCallback(viewPager2PageChangeCallback) viewPager2.unregisterOnPageChangeCallback(viewPager2PageChangeCallback)

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

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