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;
|
|
/**
|
* Created by haijiang on 2017/5/2.
|
*/
|
|
public abstract class BaseListFragment extends BaseFragment {
|
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_fragment_list_layout;
|
}
|
|
@Override
|
protected void initViews() {
|
initMulitiStatusView(R.id.empty_layout);
|
initRefreshView();
|
setupRecyclerView();
|
}
|
|
/**
|
* 加载更多数据
|
*/
|
protected abstract void onLoadMore();
|
|
/**
|
* 刷新数据
|
*/
|
protected abstract void onRefresh();
|
|
//初始化刷新控件
|
private void initRefreshView() {
|
mPtrFrame = findView(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(getActivity());
|
int[] colors = getResources().getIntArray(R.array.google_colors);
|
header.setColorSchemeColors(colors);
|
header.setLayoutParams(new PtrFrameLayout.LayoutParams(-1, -2));
|
header.setPadding(0, DensityUtils.dip2px(getActivity(), 15), 0, DensityUtils.dip2px(getActivity(), 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 = findView(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(getActivity(),2);
|
manager.setSpanSizeLookup(new HeaderSpanSizeLookup((HeaderAndFooterRecyclerViewAdapter) mRecyclerView.getAdapter(), manager.getSpanCount()));
|
mRecyclerView.setLayoutManager(manager);
|
}
|
|
/**
|
* 设置rv顶部加载View
|
*/
|
protected void showFootViewEnd(){
|
RecyclerViewStateUtils.setFooterViewState(getActivity(), mRecyclerView, AppConfig.DEFAULT_SIZE, LoadingFooter.State.TheEnd, null);
|
}
|
protected void showFootViewLoading(){
|
RecyclerViewStateUtils.setFooterViewState(getActivity(), mRecyclerView, AppConfig.DEFAULT_SIZE, LoadingFooter.State.Loading, null);
|
}
|
protected void showFootViewNormal(){
|
RecyclerViewStateUtils.setFooterViewState(mRecyclerView, LoadingFooter.State.Normal);
|
}
|
}
|