ViewPager下的懒加载Fragment

来源:互联网 发布:linux 查看物理内存 编辑:程序博客网 时间:2024/05/02 00:02

哎,不想传播负能量,也无心写代码和博客,直接把项目中测试通过的懒加载Fragment方法贴上来吧,直接copy到项目中,稍微配置就可以使用

/** * Created by J_X on 2016/7/29. * This Class is for Fragment, which wanna delay to load data * This Class is always use in ViewPager+Fragment firework * * @see com.study.moodline.as.activities.SignActivity * @see com.study.moodline.as.fragments.InformationFragment */public abstract class BaseLazyLoadFragment extends BaseFragment {    /**     * Has the fragment was visible for user?     */    public  boolean isUserVisiable;    /**     * Has view readied to create and initiate?     */    public boolean isViewInitiated;    /**     * Has data loaded?     */    public boolean isDataLoaded;    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        DebugLogUtil.getInstance().Debug("onViewCreated:");        isViewInitiated = true;        getData();    }    @Override    public void setUserVisibleHint(boolean isVisibleToUser) {        super.setUserVisibleHint(isVisibleToUser);        DebugLogUtil.getInstance().Debug("setUserVisibleHint:"+getUserVisibleHint());        if (getUserVisibleHint()) {            this.isUserVisiable = true;            getData();        }else        {            this.isUserVisiable = false;        }    }    /**     * subclass implements this method to loading data lazily;     *     * @return Has loaded?     */    public abstract boolean loadingData();    /**     * Default Method don't need to force updating data     * @return     */    protected boolean getData()    {        return getData(false);    }    /**     * If fragment is visible and view has initiated while data hasn't load or user force updating data,     * this fragment will to loading data     * @param isForceUpdate if true will force updating data     * @return     */    protected boolean getData(boolean isForceUpdate) {        DebugLogUtil.getInstance().Error("isUserVisiable:"+isUserVisiable);        DebugLogUtil.getInstance().Error("isViewInitiated:"+isViewInitiated);        DebugLogUtil.getInstance().Error("isDataLoaded:"+isDataLoaded);        if (isUserVisiable && isViewInitiated && (!isDataLoaded || isForceUpdate)) {            this.isDataLoaded = loadingData();            return this.isDataLoaded;        }        return false;    }}



0 0
原创粉丝点击