package com.aries.library.fast.module.fragment; import android.os.Bundle; import androidx.recyclerview.widget.RecyclerView; import com.aries.library.fast.basis.BasisFragment; import com.aries.library.fast.delegate.FastRefreshLoadDelegate; import com.aries.library.fast.i.IFastRefreshLoadView; import com.aries.library.fast.i.IHttpRequestControl; import com.chad.library.adapter.base.BaseQuickAdapter; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.scwang.smart.refresh.layout.api.RefreshLayout; import me.bakumon.statuslayoutmanager.library.StatusLayoutManager; /** * @Author: AriesHoo on 2018/7/20 16:55 * @E-Mail: AriesHoo@126.com * Function:下拉刷新及上拉加载更多+多状态切换 * Description: * 1、2018-7-20 16:55:45 设置StatusLayoutManager 目标View */ public abstract class FastRefreshLoadFragment extends BasisFragment implements IFastRefreshLoadView { protected SmartRefreshLayout mRefreshLayout; protected RecyclerView mRecyclerView; protected StatusLayoutManager mStatusManager; protected int mDefaultPage = 0; protected int mDefaultPageSize = 10; private BaseQuickAdapter mQuickAdapter; private Class mClass; protected FastRefreshLoadDelegate mFastRefreshLoadDelegate; @Override public void beforeInitView(Bundle savedInstanceState) { super.beforeInitView(savedInstanceState); mClass = this.getClass(); mFastRefreshLoadDelegate = new FastRefreshLoadDelegate<>(mContentView, this, mClass); mRecyclerView = mFastRefreshLoadDelegate.mRecyclerView; mRefreshLayout = mFastRefreshLoadDelegate.mRefreshLayout; mStatusManager = mFastRefreshLoadDelegate.mStatusManager; mQuickAdapter = mFastRefreshLoadDelegate.mAdapter; mFastRefreshLoadDelegate.setLoadMore(isLoadMoreEnable()); } @Override public IHttpRequestControl getIHttpRequestControl() { return new IHttpRequestControl() { @Override public SmartRefreshLayout getRefreshLayout() { return mRefreshLayout; } @Override public BaseQuickAdapter getRecyclerAdapter() { return mQuickAdapter; } @Override public StatusLayoutManager getStatusLayoutManager() { return mStatusManager; } @Override public int getCurrentPage() { return mDefaultPage; } @Override public int getPageSize() { return mDefaultPageSize; } @Override public Class getRequestClass() { return mClass; } }; } @Override public void onRefresh(RefreshLayout refreshlayout) { mDefaultPage = 0; loadData(mDefaultPage); } @Override public void onLoadMore() { loadData(++mDefaultPage); } @Override public void loadData() { loadData(mDefaultPage); } @Override public void onDestroy() { if (mFastRefreshLoadDelegate != null) { mFastRefreshLoadDelegate.onDestroy(); } super.onDestroy(); } }