位于ViewPager中的Fragment中的Android RecyclerView在到达setOffscreenPageLimit时不会重新加载/刷新视图

我有一个FragmentRecyclerView再次在ViewPager ,当我在ViewPager页面之间滑动时,我看到onDetach of Fragment被调用,但由于某种原因RecyclerView仍然存在于ViewPager Fragment特定位置,即使是当我回到分离的片段时, RecyclerView滚动位置被保留。

我为ViewPager使用FragmentStatePagerAdapter ,我从getItemPosition()返回POSITION_NONE ,但它没有效果。

请帮我理解这里的问题。

Solutions Collecting From Web of "位于ViewPager中的Fragment中的Android RecyclerView在到达setOffscreenPageLimit时不会重新加载/刷新视图"

尝试这一点。

1) MyAdapter extends FragmentStatePagerAdapter

2)使用getChildFragmentManager()从片段设置适配器,例如: mViewPager.setAdapter(new MyAdapter(getChildFragmentManager(), getActivity(), this))

3)从ViewpagerFrgment Override setUserVisibleHint方法

 @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { //Update Recyclerview } else { } } 

这是因为viewpager使用caching机制。 阅读这篇文章:

http://doublenegative.com/fragment-state-restoration-and-the-fragmentstatepageradapter/

FragmentStatePagerAdapter保存状态并销毁碎片; 它还恢复了片段被重新创build时恢复RecycleView的状态(滚动位置)的状态。

从最终用户来看,它与使用FragmentPageAdapter将内存中的FragmentPageAdapter保留在相同的行为。

这是正常的,通常需要的行为。