BaseLoadDataForNetFragment
2024-08-30 19:19:26
/**
* 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;
}
最新文章
- RabbitMQ的几种应用场景
- Spring JdbcTemplate 的使用与学习(转)
- convert转化成特定日期格式
- epoll实现linux进程通信
- 根据powerdesigner的OO模型生成C#代码
- servlet跳转jsp
- Mysql优化相关总结
- Python Function Note
- matlab如何保存figure中去掉白边的图片
- shell的wc命令统计 head tail命令详解
- 一个通用的makefile(一)
- 【算法】Bert预训练源码阅读
- Python3中操作字符串str必须记住的几个方法
- 使用Ruby处理大型CSV文件
- 奶牛编号(Cowids) [NOIP模拟]
- Spring MVC异常处理 和 重定向传递数据
- Unity 3D中ToLua-UGUI使用说明、导入Unity流程、制作登陆界面
- springmvc 接受json参数的坑
- Linux操作系统,服务器端的主流
- Devexpress VCL Build v2013 vol 14.1.5 发布
热门文章
- linux命令行todo列表管理工具Taskwarrior介绍
- English——Unit 1
- Iptables基础整理
- ASP.NET Core Module overview模块概述
- Leetcode 之Largest Rectangle in Histogram(40)
- 简单搞懂OAuth2.0
- mac date 和 Linux date实现从指定时间开始循环
- hdu 2147(巴什博弈+NP图)
- eclipse+cmake+c++11+ros
- [水煮 ASP.NET Web API2 方法论](1-3)如何接收 HTML 表单请求