package com.moral.screen.base; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.View; import com.moral.andbrickslib.baseadapter.headandfooter.EndlessRecyclerOnScrollListener; import com.moral.andbrickslib.baseadapter.headandfooter.ExStaggeredGridLayoutManager; import com.moral.andbrickslib.baseadapter.headandfooter.HeaderAndFooterRecyclerViewAdapter; import com.moral.andbrickslib.baseadapter.headandfooter.HeaderSpanSizeLookup; import com.moral.andbrickslib.baseadapter.headandfooter.LoadingFooter; import com.moral.andbrickslib.baseadapter.headandfooter.RecyclerViewStateUtils; import com.moral.andbrickslib.baseadapter.headandfooter.SpaceItemDecoration; import com.moral.andbrickslib.utils.DensityUtils; import com.moral.screen.R; import com.moral.screen.common.AppConfig; import in.srain.cube.views.ptr.PtrClassicFrameLayout; import in.srain.cube.views.ptr.PtrDefaultHandler; import in.srain.cube.views.ptr.PtrFrameLayout; import in.srain.cube.views.ptr.PtrHandler; import in.srain.cube.views.ptr.header.MaterialHeader; /** * ListActivity基类 * Created by haijiang on 2017/5/2. */ public abstract class BaseListActivity extends BaseActivity{ protected PtrClassicFrameLayout mPtrFrame; protected HeaderAndFooterRecyclerViewAdapter mHeaderAndFooterRecyclerViewAdapter = null; protected RecyclerView mRecyclerView; /** * 分页 */ protected int pageIndex = 1; protected int totalPage=0; protected boolean isRefresh,isLoadMore; @Override protected int getLayoutId() { return R.layout.base_list_layout; } @Override protected void initViews() { initTopBar(); initMulitiStatusView(R.id.empty_layout); initRefreshView(); setupRecyclerView(); initOtherView(); } /** * 加载其它view组件 */ protected abstract void initOtherView(); /** * 加载更多数据 */ protected abstract void onLoadMore(); /** * 刷新数据 */ protected abstract void onRefresh(); //初始化刷新控件 private void initRefreshView() { mPtrFrame = (PtrClassicFrameLayout) findViewById(R.id.rotate_header_list_view_frame); mPtrFrame.setLastUpdateTimeRelateObject(this); mPtrFrame.setPtrHandler(new PtrHandler() { @Override public void onRefreshBegin(PtrFrameLayout frame) { //刷新数据 pageIndex = 1; isRefresh = true; isLoadMore = false; onRefresh(); } @Override public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) { return PtrDefaultHandler.checkContentCanBePulledDown(frame, content, header); } }); // header final MaterialHeader header = new MaterialHeader(this); int[] colors = getResources().getIntArray(R.array.google_colors); header.setColorSchemeColors(colors); header.setLayoutParams(new PtrFrameLayout.LayoutParams(-1, -2)); header.setPadding(0, DensityUtils.dip2px(this, 15), 0, DensityUtils.dip2px(this, 10)); header.setPtrFrameLayout(mPtrFrame); mPtrFrame.setLoadingMinTime(500); mPtrFrame.setDurationToCloseHeader(1000); mPtrFrame.setHeaderView(header); mPtrFrame.addPtrUIHandler(header); // default is false mPtrFrame.setPullToRefresh(false); // default is true mPtrFrame.setKeepHeaderWhenRefresh(true); } private void setupRecyclerView() { mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview); // DividerItemDecoration line = new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST); // mRecyclerView.addItemDecoration(line); mRecyclerView.setLayoutManager(new LinearLayoutManager(mRecyclerView.getContext())); mRecyclerView.addOnScrollListener(mOnScrollListener); } private EndlessRecyclerOnScrollListener mOnScrollListener = new EndlessRecyclerOnScrollListener() { @Override public void onLoadNextPage(View view) { super.onLoadNextPage(view); LoadingFooter.State state = RecyclerViewStateUtils.getFooterViewState(mRecyclerView); if(state == LoadingFooter.State.Loading||state == LoadingFooter.State.TheEnd) { return; } showFootViewLoading(); isRefresh = false; isLoadMore = true; pageIndex++; onLoadMore(); } }; /** * 设置瀑布流 */ public void setRecyclerViewFall(){ SpaceItemDecoration space = new SpaceItemDecoration(12); mRecyclerView.addItemDecoration(space); ExStaggeredGridLayoutManager manager = new ExStaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); manager.setSpanSizeLookup(new HeaderSpanSizeLookup((HeaderAndFooterRecyclerViewAdapter) mRecyclerView.getAdapter(), manager.getSpanCount())); mRecyclerView.setLayoutManager(manager); } /** * 设置网格 */ public void setRecyclerViewGrid(){ SpaceItemDecoration space = new SpaceItemDecoration(12); mRecyclerView.addItemDecoration(space); GridLayoutManager manager = new GridLayoutManager(this,2); manager.setSpanSizeLookup(new HeaderSpanSizeLookup((HeaderAndFooterRecyclerViewAdapter) mRecyclerView.getAdapter(), manager.getSpanCount())); mRecyclerView.setLayoutManager(manager); } /** * 设置rv顶部加载View */ protected void showFootViewEnd(){ RecyclerViewStateUtils.setFooterViewState(this, mRecyclerView, AppConfig.DEFAULT_SIZE, LoadingFooter.State.TheEnd, null); } protected void showFootViewLoading(){ RecyclerViewStateUtils.setFooterViewState(BaseListActivity.this, mRecyclerView, AppConfig.DEFAULT_SIZE, LoadingFooter.State.Loading, null); } protected void showFootViewNormal(){ RecyclerViewStateUtils.setFooterViewState(mRecyclerView, LoadingFooter.State.Normal); } }