如果达到setOffscreenPageLimit,则位于ViewPager中片段中的Android RecyclerView不会重新加载/刷新视图
我在如果达到setOffscreenPageLimit,则位于ViewPager中片段中的Android RecyclerView不会重新加载/刷新视图,android,android-fragments,android-viewpager,android-recyclerview,Android,Android Fragments,Android Viewpager,Android Recyclerview,我在片段中有一个回收视图,当我在查看页面之间滑动时,它也在查看页面中,我看到正在调用Fragment的onDetach,但是由于某种原因,RecyclerView仍然存在于ViewPager中片段的特定位置,甚至当我回到分离的片段时,RecyclerView的滚动位置也被保留 我正在使用FragmentStatePagerAdapter作为ViewPager,并从getItemPosition()返回POSITION\u NONE,但它没有任何效果 请帮助我理解这里的问题。这是因为viewpag
片段
中有一个回收视图
,当我在查看页面
之间滑动时,它也在查看页面
中,我看到正在调用Fragment
的onDetach
,但是由于某种原因,RecyclerView
仍然存在于ViewPager
中片段的特定位置,甚至当我回到分离的片段时,RecyclerView
的滚动位置也被保留
我正在使用FragmentStatePagerAdapter
作为ViewPager
,并从getItemPosition()
返回POSITION\u NONE
,但它没有任何效果
请帮助我理解这里的问题。这是因为viewpager使用了缓存机制。
阅读本文:
碎片StatePageRadapter
保存状态并销毁碎片;它还恢复重新创建片段时的状态,从而恢复recycleview的状态(滚动位置)
对于最终用户来说,这与使用FragmentPageAdapter
将片段保存在内存中的行为相同
这是一种正常的、通常需要的行为。试试这几点
1) MyAdapter扩展FragmentStatePagerAdapter
2) 使用getChildFragmentManager()
例如:mViewPager.setAdapter(新的MyAdapter(getChildFragmentManager(),getActivity(),this))
3) 从ViewPagerRGment覆盖
setUserVisibleHint
方法
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//Update Recyclerview
} else {
}
}
我不确定这一点,但我猜FragmentManager有一些缓存功能。已订阅。您的viewpager中有多少页?它是一个无限滚动的viewpager,具有加载更多功能。您可以发布适配器的代码吗?适配器缓存您的片段。您必须删除片段中基于状态的所有内容,或者至少在片段分离后将其重置。这不是正确答案,您应该准备好使用片段中的数据,而不是在用户可见时开始加载。