Android 对于不同的转盘图像,ViewPager位置保持不变

Android 对于不同的转盘图像,ViewPager位置保持不变,android,infinite-carousel,Android,Infinite Carousel,我正在使用FragmentPagerAdapter和ViewPager处理转盘视图。我面临的问题是,每当我在滚动的每一页上更改图像名称时,只会显示第二个图像的错误名称。在这种情况下,它显示第一个图像的名称,从第三个图像开始,位置从0增加到1,依此类推。我检查了onPageScrolled中的位置&第一张和第二张图像都显示为0。还有一件事我注意到,只有在显示第二个图像时,getItem方法中才出现调用。因此,如果您有任何解决此问题的想法,请您指导我。ViewPager会实例化当前片段周围的片段,以

我正在使用FragmentPagerAdapter和ViewPager处理转盘视图。我面临的问题是,每当我在滚动的每一页上更改图像名称时,只会显示第二个图像的错误名称。在这种情况下,它显示第一个图像的名称,从第三个图像开始,位置从0增加到1,依此类推。我检查了onPageScrolled中的位置&第一张和第二张图像都显示为0。还有一件事我注意到,只有在显示第二个图像时,getItem方法中才出现调用。因此,如果您有任何解决此问题的想法,请您指导我。

ViewPager会实例化当前片段周围的片段,以获得平滑的滑动。使用
setOffScreenPageLimit(int)
设置应保留到当前页面两侧的页数。默认值为1

  • 当设置ViewPager的适配器并显示第一页(位置=0)时,也会创建第二页的片段(getItem()),而当前页面位置仍然为0
  • 滑动到第2页,在当前页面位置为1时创建第三个片段。(现在,当前片段的每一侧都有一个现有片段实例)
  • 滑动至第3页,创建第四个片段,显示当前页面位置,现在为2。(第1页碎片被销毁)
  • 等等
  • 如果要获取不同片段的实际位置,请直接从
    FragmentPagerAdapter.getItem(int-position)
    获取它,在返回之前将位置设置为片段的参数

    public Fragment getItem(int position) {
        YourFragment fragment = new YourFragment();
        Bundle args = new Bundle();
        args.putInt("page_position", position);
        fragment.setArguments(args);
        return fragment;
    }
    
    然后,你可以得到片段中的位置,如下所示:

    int position = getArguments().getInt("page_position"));