Fragment + viewpager 实现 懒加载 封装
来源:互联网 发布:pdf电子书资源 知乎 编辑:程序博客网 时间:2024/05/29 03:49
fragment实现懒加载,有几个前提,首先是fragment已经执行了oncreateview方法(isPrepared),其次是fragment可见(isVisiable),最后是fragment需要的数据没有加载过(isNotLoad)。。。最重要的是,你的viewpager得给所有的fragment开启缓存
满足这三个条件,fragment才需要进行懒加载操作。。。
public class DemoFragment extends Fragment{ boolean isPrepared = false; boolean isVisiable = false; boolean isNotLoaded = true; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { isPrepared = true; onLoadData(); //如果这个是viewpager的第一个出现的fragment,需要在createview的时候手动调用一次onLoadData return super.onCreateView(inflater, container, savedInstanceState); } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if(getUserVisibleHint()){ isVisiable = true; onLoadData(); }else { isVisiable = false; } } public void onLoadData(){ if (!isPrepared || !isNotLoaded || !isVisiable) return; getData(); } public void getData(){ //获取数据 isNotLoaded = false;//或者在数据返回的onsuccess的时候改为true; } }
当然你也可以写一个基类,然后只需要复写loadData方法,进行三个参数的判断来进行数据加载。。。这种方法有个不好的地方,数据需要刷新的时候,需要自己手动刷新。。。。解决方法是,用Acache缓存你取到的数据,然后给数据设置过期时间,然后再加一个判断条件,或者把IsNotLoad改成判断数据是否为空,为空切可见切执行过oncreateview就进行数据加载,因为Acache缓存的数据可以设置过期时间,时间过期了,数据就为空了。。。就能再次执行onLoaddata方法了
阅读全文
0 0
- Fragment + viewpager 实现 懒加载 封装
- ViewPager实现Fragment懒加载
- viewpager fragment 实现懒加载
- ViewPager + Fragment实现懒加载
- ViewPager+Fragment实现懒加载
- ViewPager+Fragment实现懒加载
- 实现ViewPager+Fragment的懒加载功能
- ViewPager+Fragment 懒加载的实现
- Android之Viewpager+Fragment实现懒加载
- Fragment与Viewpager实现懒加载
- TabLayout+ViewPager+Fragment懒加载实现
- TabLayout+ViewPager+Fragment实现懒加载
- Android之Viewpager+Fragment实现懒加载
- Fragment+ViewPager实现真正的懒加载
- Android之ViewPager+Fragment实现懒加载
- TabLayout+ViewPager+fragment实现懒加载
- fragment配合viewpager实现懒加载
- ViewPager+Fragment懒加载
- Mybaties与Hibernate不同
- 51Nod
- Web页面请求过程--计算机网络自顶向下笔记(六)
- numpy基础教程—统计方法
- Saving UI States
- Fragment + viewpager 实现 懒加载 封装
- C++学习笔记-primer_const
- Linux中system函数返回值详解
- ubuntu16下安装mongodb 3.6
- FAQ(19):java.io.FileNotFoundException: class path resource [resources/applicationContext.xml] cannot
- 解决微信分享时在URL尾部自动加入后缀
- DDR2学习笔记(1)
- 软件的版本号是如何确定的?
- Install MongoDB Community Edition on Ubuntu