使用
private void initLoadNextPageManager() {
//mLoadNextPageManager.loadFirstPage();
mLoadNextPageManager = new LoadNextPageManager() {
//这里应该获取一个能传入参数的东西
@Override
public boolean isLastPage() {
return isLastPageForOldListAndNewList(); //需要解析数据的时候传入两个list
//return LoadNextPageManager.isLastPage(getNewListDat(), getListData()); //这么
}
@Override
public Map<String, String> getMapParams() {
final Map<String, String> params = RequestParamsUtil.getParamsMap();
params.put("url", "http://weibo.com/6294019137/I1eGFsreC");
params.put("pageSize", "" + getPAGESIZE());
params.put("pageNo", "" + getPageNum());
return params;
}
@Override
public Map<String, String> getHeaderParams() {
return RequestParamsUtil.getHeadersMap();
}
@Override
public void requestHttpWithParams(Map<String, String> headers, Map<String, String> params, final StringCallback mCallBack) {
ParamsUtils.printParams(params);//打印参数
OkHttpUtils
.get()
.url(YQMSAPP.SELECTCOMMENTS)
.params(params)
.headers(headers)
.build()
.execute(new AuthorStringCallBack(BaseApplication.getAppActivityBase()) {
@Override
public void onError(Call call, Exception e, int id) {
super.onError(call, e, id);
if (null != mCallBack) {
mCallBack.onError(call, e, id);
}
}
@Override
public void onResponse(String response, int id) {
super.onResponse(response, id);
if (null != mCallBack) {
mCallBack.onResponse(response, id);
}
//解析数据,判断问题
IStarResponse<IStarResult2<IStarDataPage<SameCommentListBean>>> parse = IStarJSONUtils.parse(response, new TypeToken<IStarResponse<IStarResult2<IStarDataPage<SameCommentListBean>>>>() {
});
if ("success".equals(parse.getMsg())
|| "0".equals(parse.getStatus())) {
List<SameCommentListBean> data = null;
try {
data = parse.getResult().getData().getData();
} catch (Exception e) {
data = new ArrayList<>();
}
setOldAndNewListData(((QuickAdapter) displayCommentAdapter.getInnerAdapter()).getDatas(), data); //设置数据用于比较
if (isLastPage()) { //说明没有更多数据了
RecyclerViewStateUtils.setFooterViewState(BaseApplication.getAppActivityBase(), rv_same_content_list, 0/*REQUEST_COUNT*/, LoadingFooter.State.TheEnd, null);
} else {
//还有更多数据,直接加入,更新数据
((QuickAdapter) displayCommentAdapter.getInnerAdapter()).addDatas(data);
displayCommentAdapter.notifyDataSetChanged();
RecyclerViewStateUtils.setFooterViewState(rv_same_content_list, LoadingFooter.State.Normal);
}
}
}
});
}
};
//mLoadNextPageManager.setPAGESIZE(200);
mLoadNextPageManager.loadFirstPage();
}
源代码
public abstract class LoadNextPageManager {
private int FIRST_PAGE = 1;
private int PAGESIZE = 10;//默认每页的个数
private int pageNum = FIRST_PAGE; //页数,默认是从1开始
private List listData; //将旧数据传进来
private List newListDat; // 将新数据传进来用于比较
private int totalSize;//总个数,用于保存吧
// public static LoadNextPageManager newInstance() {
//
// LoadNextPageManager fragment = new LoadNextPageManager() {
//
// @Override
// public void requestHttpWithParams(StringCallback mCallBack) {
//
// }
//
// @Override
// public boolean isLastPage() {
// List listData = null;
// List newListData = null;
// return LoadNextPageManager.isLastPage(listData, newListData);
// }
//
// @Override
// public Map<String, String> getMapParams() {
// return new HashMap<>();
// }
// };
// return fragment;
// }
// 获取总个数
public int getTotalSize() {
return totalSize;
}
// 设置总个数
public void setTotalSize(int totalSize) {
this.totalSize = totalSize;
}
/**
* @param listData 全部的数据
* @param newListData 新请求的数据
*/
public void setOldAndNewListData(List listData, List newListData) {
this.listData = listData;
this.newListDat = newListData;
}
public List getListData() {
return listData;
}
public void setListData(List listData) {
this.listData = listData;
}
public List getNewListDat() {
return newListDat;
}
public void setNewListDat(List newListDat) {
this.newListDat = newListDat;
}
public int getPAGESIZE() {
return PAGESIZE;
}
public void setPAGESIZE(int PAGESIZE) {
this.PAGESIZE = PAGESIZE;
}
public void setFirstPage() {
setPageNum(FIRST_PAGE);
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getPageNum() {
return pageNum;
}
//页数加1
private void increasePageNum() {
pageNum++;
}
// 页数减1
private void decreasePageNum() {
pageNum--;
}
// 加载第一页
public void loadFirstPage() {
//OkHttpUtils.post().params(para)
setFirstPage();
loadMorePage();
}
// 加载更多数据
public void loadMorePage() {
Map<String, String> headers = getHeaderParams();
Map<String, String> params = getMapParams();
if (null == headers) {
headers = new HashMap<>();
}
if (null == params) {
params = new HashMap<>();
}
increasePageNum();//请求之前, 先添加页数
requestHttpWithParams(headers, params, new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
decreasePageNum();//页数回复到原来
}
@Override
public void onResponse(String response, int id) {
// 判断是否是足后一页
if (isLastPage()) {
decreasePageNum();//页数恢复到上一页
}
}
});
}
// 下载下一页
public abstract void requestHttpWithParams(Map<String, String> headers, Map<String, String> params, StringCallback mCallBack);
public abstract boolean isLastPage(); //判断是否是最后一页,可以使用静态方法,也可以自己判断
public abstract Map<String, String> getMapParams();
public Map<String, String> getHeaderParams() {
return new HashMap<>();//头部
}
//判断是否是最后一页
public static boolean isLastPage(List listData, List newListData) {
if (newListData == null || newListData.size() < 1) { // 没有数据
//但原列表有数据
if (listData != null && listData.size() > 0) {
return true; //是最后一页
}
}
return false;
}
// 判断是否是最后一页面
public boolean isLastPageForOldListAndNewList() {
return LoadNextPageManager.isLastPage(getListData(), getNewListDat());
}
}