ViewPager下的懒加载Fragment

哎,不想传播负能量,也无心写代码和博客,直接把项目中测试通过的懒加载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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值