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的更多相关文章
随机推荐
- vue-实现倒计时功能
JavaScript 创建一个 countdown 方法,用于计算并在控制台打印距目标时间的日.时.分.秒数,每隔一秒递归执行一次. msec 是当前时间距目标时间的毫秒数,由时间戳相减得到,我们将以 ...
- [转载]关于python字典类型最疯狂的表达方式
一个Python字典表达式谜题 让我们探究一下下面这个晦涩的python字典表达式,以找出在python解释器的中未知的内部到底发生了什么. # 一个python谜题:这是一个秘密 # 这个表达式计算 ...
- 6:django 通用视图
上一节我们介绍了django视图函数里面几个常用的函数,这节我们来看一下django为我们提供的一些通用视图吧 在最后面有我自己的示例代码,html部分太多了就不贴了 “简单”视图函数 正如名字所言, ...
- LeetCode解题报告—— 4Sum & Remove Nth Node From End of List & Generate Parentheses
1. 4Sum Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + ...
- LeetCode解题报告—— 1-bit and 2-bit Characters & 132 Pattern & 3Sum
1. 1-bit and 2-bit Characters We have two special characters. The first character can be represented ...
- 关于云平台中OFFICE预览与视频预览的解决办法
最近,随着firefox x64的升级,出现flash插件完全被禁止的现象,html5替换是大势所趋,原来我们在云平台中有多处使用flash的地方,比如OFFICE预览,视频播放,游戏等,现对于OFF ...
- kubernetes如何要使用用户名和密码登陆harbor以拉取docker镜像,应该如何操作?
还好,网上有相应的CASE处理. http://www.jianshu.com/p/ffbfb44dc496 =========================== 先生成名为为regsecret的S ...
- PHP数组转对象,对象转数组
废话不多,直接上代码: <?php class object_array{ //数组转对象 public static function array_to_object($e){ if(gett ...
- AC日记——自然数和分解 codevs 2549
自然数和分解 思路: 水题: 代码: #include <bits/stdc++.h> using namespace std; ][]; int main() { cin>> ...
- 封装ajax支持get、post
为什么要封装ajax,因为…… for(var i=0;i<20;i++){ $.ajax(……) } 的时候,整个页面都卡死了,于是,我开始找答案. 后来,找到了,就是jquery的ajax属 ...