/**
* Fragment 加载网络请求
*/
public abstract class BaseLoadDataForNetFragment extends Fragment { // 视图是否初始化完成
protected boolean isViewInitiated;
// 界面是否可见
protected boolean isVisibleToUser;
// 数据是否加载
protected boolean isDataInitiated; @Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
isViewInitiated = true;
prepareFetchData();
} @Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
this.isVisibleToUser = isVisibleToUser;
prepareFetchData();
} private void prepareFetchData() {
// 不设置为需要每次可见的时候都强制刷新界面
prepareFetchData(false);
} /**
* 设置true,可强制刷新界面
*
* @param forceUpdate 是否强制刷新界面
* @return
*/
protected void prepareFetchData(boolean forceUpdate) {
if (isVisibleToUser && isViewInitiated && (!isDataInitiated || forceUpdate)) {
fetchDataForNet();
isDataInitiated = true;
}
} /**
* 刷新数据,网络刷新数据
*/
public abstract void fetchDataForNet(); }

fragment中请求网络。。

子fagnment 复用已经加载的数据

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
WLog.d("onCreateView"); View mView = inflater.inflate(R.layout.fragment_my_order, container, false);
mNoDataTV = (TextView) mView.findViewById(R.id.fragment_order_tv_no_data);
mShowLoading = (LinearLayout) mView.findViewById(R.id.fragment_order_ll_loading); // 子界面可以重用网络加载的数据
if (isDataInitiated) {
WLog.d("数据已经加载过...无需再次请求数据");
//mShowLoading.setVisibility(View.GONE);
//mNoDataTV.setVisibility(View.VISIBLE);
} return mView;
}

最新文章

  1. RabbitMQ的几种应用场景
  2. Spring JdbcTemplate 的使用与学习(转)
  3. convert转化成特定日期格式
  4. epoll实现linux进程通信
  5. 根据powerdesigner的OO模型生成C#代码
  6. servlet跳转jsp
  7. Mysql优化相关总结
  8. Python Function Note
  9. matlab如何保存figure中去掉白边的图片
  10. shell的wc命令统计 head tail命令详解
  11. 一个通用的makefile(一)
  12. 【算法】Bert预训练源码阅读
  13. Python3中操作字符串str必须记住的几个方法
  14. 使用Ruby处理大型CSV文件
  15. 奶牛编号(Cowids) [NOIP模拟]
  16. Spring MVC异常处理 和 重定向传递数据
  17. Unity 3D中ToLua-UGUI使用说明、导入Unity流程、制作登陆界面
  18. springmvc 接受json参数的坑
  19. Linux操作系统,服务器端的主流
  20. Devexpress VCL Build v2013 vol 14.1.5 发布

热门文章

  1. linux命令行todo列表管理工具Taskwarrior介绍
  2. English——Unit 1
  3. Iptables基础整理
  4. ASP.NET Core Module overview模块概述
  5. Leetcode 之Largest Rectangle in Histogram(40)
  6. 简单搞懂OAuth2.0
  7. mac date 和 Linux date实现从指定时间开始循环
  8. hdu 2147(巴什博弈+NP图)
  9. eclipse+cmake+c++11+ros
  10. [水煮 ASP.NET Web API2 方法论](1-3)如何接收 HTML 表单请求