/**
* 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. LeetCode 19 Valid Parentheses

    Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...

  2. printk一些技巧【转】

    转自:http://haohetao.iteye.com/blog/1147791 转自:http://blog.csdn.net/wbd880419/article/details/73530550 ...

  3. 一文看懂IC芯片生产流程:从设计到制造与封装

    http://blog.csdn.net/yazhouren/article/details/50810114 芯片制造的过程就如同用乐高盖房子一样,先有晶圆作为地基,再层层往上叠的芯片制造流程后,就 ...

  4. Development tools[重点]

    Development tools yum groupinfo "Development tools" Loaded plugins: product-id, security, ...

  5. 获取并编译最新的Notepad++源码

    获取并编译最新的Notepad++源码 http://blog.csdn.net/u012814856/article/details/68947310 Notepad++源码编译及其分析 http: ...

  6. 2017多校第9场 HDU 6162 Ch’s gift 树剖加主席树

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6162 题意:给出一棵树的链接方法,每个点都有一个数字,询问U->V节点经过所有路径中l < ...

  7. Dubbo之旅--注册中心

    在介绍Dubbo的内部逻辑的时候提到很多次注册中心的概念.实现注册中心的有很多,主要是以下四个注册中心分别是: Multicast注册中心 Zookeeper注册中心 Redis注册中心 Simple ...

  8. 多路复用I/O模型poll() 模型 代码实现

    多路复用I/O模型poll() 模型 代码实现 poll()机制和select()机制是相似的,都是对多个描述符进行轮询的方式. 不同的是poll()没有描述符数目的限制. 是通过struct pol ...

  9. img加载不出来,给个默认图片。

    忽然发现,jq里也有坑,很多东西莫名其妙的被废弃了……所以,只能用原生js来做了: $('img').each(function() { if (!this.complete || typeof th ...

  10. PHP7 微信支付回调失败 解决

    升级完PHP7 发现微信支付回调失败.原来是 $GLOBALS['HTTP_RAW_POST_DATA'];没有定义的问题.php7 移除了这个全局变量. 问题代码如下: 微信API :WxPay.A ...