Base类

作者: 明日未期 | 来源:发表于2021-01-04 15:27 被阅读0次

    BaseFragment

    public abstract class BaseFragment extends Fragment {
        boolean isViewInitiated=false;
        boolean isVisibleToUser=false;
        boolean isDataInitiated=false;
    
        private SparseArray<View> mViews;
        private View mView;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            mView = inflater.inflate(getLayout(), container, false);
            mViews = new SparseArray<>();
            return mView;
        }
    
        @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();
        }
    
    
    
        void prepareFetchData() {
            prepareFetchData(false);
        }
        void prepareFetchData(boolean forceUpdate) {
            if (isViewInitiated && isVisibleToUser && (!isDataInitiated || forceUpdate)) {
                loadData();
                isDataInitiated = true;
            }
        }
    
        public <T extends View> T findView(int resId) {
            View view=mViews.get(resId);
            if (view == null) {
                view = mView.findViewById(resId);
                mViews.put(resId, view);
            }
            return (T)view;
        }
    
        abstract int getLayout();
    
        abstract void loadData();
    }
    

    相关文章

      网友评论

        本文标题:Base类

        本文链接:https://www.haomeiwen.com/subject/aijvoktx.html