关于解决ViewPager FragmentPagerAdapter结合 禁止预加载问题

**

关于解决ViewPager FragmentPagerAdapter结合 禁止预加载问题

**

最近一直困扰我的一个问题,就我们常用的ViewPager 实现左右来回滑动禁止预加载问题与加载一次
后缓存起来滑动回去不需要加载的问题,类似于游览器的新闻来回滑动的效果,我也通过百度找了非常多的资料,
有的人说滑动到当前Fragment,用这个方法加载数据
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && isFirst){
//在这里加载数据
isFirst = false;
}
}
也有的说是通过改写ViewPager,将private static final int DEFAULT_OFFSCREEN_PAGES = 1; 该值改为0;还需要用什么V4包才能实现,可能可以够解决该问题,但是能我觉得这并非问题的所在,后面我就去看相关API,试图去理解ViewPager,这个对象到底起到什么作用,这个对象跟FragmetPagerAdapter是一个什么关系,试着这个方向,FragmentPagerAdapter 管理者我们每一个需要加载的Fragment,ViewPager这时候就相当于一个被管理者,我们的每一个Fragment都在ViewPager里面,相当于一个水杯子,水杯不能控制里面的水,所以FragmentPagerAdapter的出现,
FragmentPagerAdapter是管理者 当然有权利控制需要加载的每一个Fragment,这里面在这里插入图片描述FragmentPagerAdapter类中会有这两个常量,通过注释可以看出来这两个就是调用当前Fragment,还是预加载下一个Fragment,继承时将 BEHAVIOR_SET_USER_VISIBLE_HINT传进去
以下是Kotlin写法,java 自己转换
FragmentPagerAdapter(fm,BEHAVIOR_SET_USER_VISIBLE_HINT)
文章到这里也就已经解决了预加载问题
接下来要解决的是,Fragment缓存的问题,向右滑动加载,向左滑动不加载,刚刚上面已经说过ViewPager 相当于水杯,水杯当然是可以存水的,当然可以把每一个Fragment存起来,
mViewPager.offscreenPageLimit = 具体的Frgament数量,这个东西其实将Fragment存起来,这两个结合就完美解决这个问题了,
希望对大家有所帮助,也希望同行给出更多解决问题的方案
本文作者原创
如有转载请联系作者本人
2020/10/26

猜你喜欢

转载自blog.csdn.net/weixin_43823619/article/details/109291981