• 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;
        }
  • 相关阅读:
    vue 开发环境搭建
    签名算法
    MySQL explain执行计划优化
    查看运行时某个java对象占用JVM大小及通过idea查看java的内存占用情况
    jenkins 配置
    CSS布局
    《JavaScript 代码优化指南》
    JavaScript 跨域漫游
    iFrame 功能详解
    粘性的底部布局
  • 原文地址:https://www.cnblogs.com/H-BolinBlog/p/9007340.html
Copyright © 2020-2023  润新知