使用
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());
}
}