实现ViewPager+Fragment的懒加载功能

来源:互联网 发布:linux 设置root密码 编辑:程序博客网 时间:2024/04/29 21:04

当ViewPager和Fragment组合使用的时候,如果每个Fragment里面都有请求数据的话,会一下子加载大量资源。有时候项目中只需要在滑动到当前页的时候加载数据,实现Fragment懒加载,这时可以利用Fragment的setUserVisibleHint(boolean isVisibleToUser)方法来实现。


在Fragment里面重写setUserVisibleHint(boolean isVisibleToUser)方法
因为setUserVisibleHint()方法在onCreateView()之前执行,所以可能会有空指针异常,所以用isViewCreated 变量来控制在onCreateView()执行完成后加载数据。

@Overridepublic void setUserVisibleHint(boolean isVisibleToUser) {    if (isVisibleToUser) {        isShowed = isVisibleToUser;//isShowed 标识是否对用户可见        if ((datas== null || datas.size() == 0)                && isViewCreated) {//isViewCreated 标识onCreateView()方法已执行                loadLvData();//加载数据            }        }    super.setUserVisibleHint(isVisibleToUser);}

在onCreateView()方法中添加下面代码:

private boolean isViewCreated = false;private isShowed = false;private List<String> datas;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,            Bundle savedInstanceState) {    //...已有的代码    isViewCreated = true;    if (isShowed) {        loadLvData();    }}
0 0
原创粉丝点击