ViewPager+Fragment懒加载
来源:互联网 发布:一元云购v8源码 编辑:程序博客网 时间:2024/05/22 17:19
要想实现Fragment的懒加载首先介绍两个方法:
void setUserVisibleHint(boolean isVisibleToUser)
boolean getUserVisibleHint()
它们分别用作设置/获得Fragment可见状态,我们可以重写Fragment在其中做判断.
public class MyFragment extends Fragment { private boolean isInit; // 是否可以开始加载数据 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { isInit = true; return inflater.inflate(R.layout.fragment_my, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); /* 初始化控件 */ } @Override public void onResume() { super.onResume(); // 判断当前fragment是否显示 if (getUserVisibleHint()) { initViewAndData (); </span> } } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); // 每次切换fragment时调用的方法 if (isVisibleToUser) { initViewAndData(); } } /** * 初始化数据 */ private void initViewAndData() { if (isInit) { isInit = false;//加载数据完成 // 加载各种数据 } } }
一般情况下ViewPager与fragment配合使用肯定不止一个fragment,每个fragment都这样不累死。。。不会偷懒的程序猿都不是好猿。
抽取一个BaseFragment出来
public abstract class BaseFragment extends Fragment { protected View rootView = null; protected TextView tv_title; protected EditText et_home_search; /** * 是否开始加载 */ protected boolean isLoad=false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { isLoad=true;return super.onCreateView(inflater, container, savedInstanceState); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } @Override public void onResume() { super.onResume(); /** * 判断当前fragment是否显示 */ if(getUserVisibleHint()){ initViewAndData(); } } /** * 初始化布局以及数据 */ public abstract void initViewAndData(); @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); /** * 每次切换fragment时调用的方法 */ if(isLoad){ initViewAndData(); } }}使用的时候直接继承BaseFragment,这里需要注意的是重写了initViewAndData()方法后记得判断一下.
private void initViewAndData() { if (isInit) { isInit = false;//加载数据完成 // 加载各种数据 } }
1 0
- ViewPager+Fragment懒加载
- Viewpager Fragment懒加载
- ViewPager+Fragment懒加载
- ViewPager+Fragment懒加载
- viewPager fragment 懒加载
- fragment viewpager 懒加载
- ViewPager加载Fragment懒加载
- viewpager+fragment的懒加载
- ViewPager实现Fragment懒加载
- viewpager+fragment 懒加载操作
- ViewPager+Fragment懒加载方式
- viewpager嵌套Fragment懒加载
- viewpager fragment 实现懒加载
- Android ViewPager + Fragment懒加载
- ViewPager + Fragment实现懒加载
- ViewPager+Fragment实现懒加载
- ViewPager+Fragment实现懒加载
- viewpager+fragment之fragment懒加载
- 关系范式
- 自动化测试人员的定位
- WebView使用基础
- [ASP.NET]谈谈IIS与ASP.NET管道
- Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin: 2.3 . 2
- ViewPager+Fragment懒加载
- Training Day2
- iOS-swift环形进度指示器+图片加载动画
- Wireshark常用filter
- python学习——数据类型和变量
- XML解析
- C#中对文件的操作
- 如何不编程也能使用爬虫采集图片或图片地址
- POJ 1011 (DFS)