使 ViewPager 在数据更改时忘记当前项目位置
Make ViewPager forget current item position upon data change
我有一个 FragmentStatePagerAdapter
可以容纳三个 Fragment
。 Fragments
是 A(位置 0)、B 和 C(位置 2)。 Fragment B
当前可见。
根据用户交互,我会调用notifyDataSetChanged()
,现在有五个Fragments
。它们是D(位置0)、E、F、G和H(位置4)。
当前行为是在数据更改后默认显示 Fragment E
。 (ViewPager
保持在其先前的位置。)但是,我希望 ViewPager
每次 FragmentStatePagerAdapter
获取一些新数据时显示 position-0
项目。
我在 ViewPager
上试过 setCurrentItem(0)
。但是 Fragment E
仍然在 ViewPager
滚动到 Fragment D
之前显示。
有什么解决办法吗?
您应该改用 setCurrentItem(0, false)
编辑:
public void setCurrentItem (int item, boolean smoothScroll)
false 禁用 smoothScroll
我有一个 FragmentStatePagerAdapter
可以容纳三个 Fragment
。 Fragments
是 A(位置 0)、B 和 C(位置 2)。 Fragment B
当前可见。
根据用户交互,我会调用notifyDataSetChanged()
,现在有五个Fragments
。它们是D(位置0)、E、F、G和H(位置4)。
当前行为是在数据更改后默认显示 Fragment E
。 (ViewPager
保持在其先前的位置。)但是,我希望 ViewPager
每次 FragmentStatePagerAdapter
获取一些新数据时显示 position-0
项目。
我在 ViewPager
上试过 setCurrentItem(0)
。但是 Fragment E
仍然在 ViewPager
滚动到 Fragment D
之前显示。
有什么解决办法吗?
您应该改用 setCurrentItem(0, false)
编辑:
public void setCurrentItem (int item, boolean smoothScroll)
false 禁用 smoothScroll