Android

Base类

2021-01-04  本文已影响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();
}
上一篇下一篇

猜你喜欢

热点阅读