BaseLoadDataForNetFragment
/**
* 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的更多相关文章
随机推荐
- 【Python学习】解决pandas中打印DataFrame行列显示不全的问题
在使用pandas的DataFrame打印时,如果表太长或者太宽会自动只给前后一些行列,但有时候因为一些需要,可能想看到所有的行列. 所以只需要加一下的代码就行了. #显示所有列 pd.set_opt ...
- 64_g3
gimp-resynthesizer-2.0-6.20160601git787ee5a.fc2..> 11-Feb-2017 05:36 77650 gimp-save-for-web-0.29 ...
- selenium.webdriver.common.keys 模块中常用的变量
表11-5 selenium.webdriver.common.keys 模块中常用的变量属性 含义Keys.DOWN, Keys.UP, Keys.LEFT,Keys.RIGHT 键盘箭头键Keys ...
- 006 Java并发编程wait、notify、notifyAll和Condition
原文https://www.cnblogs.com/dolphin0520/p/3920385.html#4182690 Java并发编程:线程间协作的两种方式:wait.notify.notifyA ...
- HDU 5136 Yue Fei's Battle
题目链接:HDU-5136 网上的一篇题解非常好,所以就直接转载了.转自oilover的博客 代码: #include<cstring> #include<cstdio> #i ...
- [收集]关于MSSQL数据库的一些查询
sqlserver快速查找所有存储过程中是否包含某字符 --将XXXX替换成你要查找的内容 select name from sysobjects o, syscomments s where o.i ...
- Linux系统编程——进程间通信(System V IPC 对象)
基本查看命令 ipcs -m查看共享内存 ipcs -s查看信号量 ipcs -q查看消息队列 ipcrm -m id 删除共享内存 -M+key值 ipcrm ...
- IE6下面的浮动问题
第一个问题: 在IE6下面overflow:hidden;失效 原因:在IE6/7中子级设置position:relative;属性值后,导致父级的overflow:hidden;失效. ...
- Math.random易于记忆理解
产生随机数 Math.random*(Max-Min)+Min
- Zookeeper之Curator(1)客户端对节点的一些监控事件的api使用
<一>节点改变事件的监听 public class CauratorClientTest { //链接地址 private static String zkhost="172.1 ...