/**
* 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;
}

BaseLoadDataForNetFragment的更多相关文章

随机推荐

  1. Linux 入门记录:七、fdisk 分区工具

    一.fdisk分区工具 fdisk 是来自 IBM 的老牌分区工具,支持绝大多数操作系统,几乎所有的 Linux 发行版都装有 fdisk,包括在 Linux 的 resuce 模式下依然能够使用. ...

  2. 檢查 cpu 的全部 gpio 狀態及設定

    $ adb root # cat /sys/kernel/debug/gpio

  3. 【Android XML】Android XML 转 Java Code 系列之 介绍(1)

    最近在公司做一个项目,需要把Android界面打包进jar包给客户使用.对绝大部分开发者来说,Android界面的布局以XML文件为主,并辅以少量Java代码进行动态调整.而打包进jar包的代码,意味 ...

  4. 网络知识===wireshark抓包数据分析(一)

    wireshark分析: 上图是我进行一个HTTP协议的下载,文件内容大概是1.7M左右. 抓包数据: https://files.cnblogs.com/files/botoo/wireshark% ...

  5. aspxgridview只编辑某一列然后更新

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="IsAllowDeliver ...

  6. 看懂sh脚本

    1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编写脚本完成时 ...

  7. win10网速慢

    升级到win10之后发现网速特别慢,搜了下,网上的解决办法果然好使,按照如下操作即可. 返回桌面,按WIN+R键组合,运行gpedit.msc 打开组策略 依次展开管理模板->网络->Qo ...

  8. python 函数内置方法short_desc

    1. 给函数设置一个文本 def action_checked(self, request): pass action_checked.short_desc = "签到" # sh ...

  9. Django web框架之权限管理一

    1. 需求分析: 准备:创建独立app, rbac #权限管理模块/组件 app01 #应用 分配权限,URL 2. 数据库设计 2.1 设计思路 第一版: 权限表: ID url title is_ ...

  10. rabbitmq在centos7下安装

    知识预览 一. RabbitMQ队列 二. 事例 三.基于RabbitMQ的RPC 回到顶部 一. RabbitMQ队列 ? 1 2 3 4 5 #消息中间件 -消息队列   - 异步 提交的任务不需 ...