1.接口返回的数据没有分页格式的:
请求参数:
PageIndex 查询下标,从0开始
PageSize 结束下标
{
"code": 200,
"data": [
{
"remark": " 新需求",
"rid": "3",
"startStation": "软件路",
}
],
"message": "",
"success": true
}
对于以上这种,我们需要自己做好逻辑计算
基本就三种情况:1.返回结果大于pageSize 2.返回结果小于pageSize 3.返回结果等于pageSize
private int pageSize = 20;
private int pageIndex = 0;
//获取数据
private void getHttpData(final int pageIndex, final int pageSize) {
AppModel.model().getDemandList(pageIndex,pageSize, new ProgressSubscriber<List<Demand>>(getContext(),getString(R.string.network_hint_waiting)) {
@Override
public void onError(Throwable e) {
super.onError(e);
AppUtil.showToast(getContext(), "获取数据失败," + e.getMessage());
}
@Override
public void onNext(List<Demand> demandPageInfo) {
if(pageIndex == 0){
datas.clear();
}
if(demandPageInfo.size() == 0){
AppUtil.showToast(getContext(), "已经是最后一页了");
}else{
datas.addAll(demandPageInfo);
mAdapter.notifyDataSetChanged();
}
}
@Override
public void onCompleted() {
super.onCompleted();
lay_refresh.finishRefreshing();
lay_refresh.finishLoadmore();
}
});
}
//下拉刷新
public void onRefresh() {
pageIndex = 0; //重置为0
getHttpData(pageIndex,pageSize);
}
//上拉加载
public void onLoadMore() {
if(datas.size() < pageSize){
AppUtil.showToast(getContext(), "没有新的数据了");
}else{
if(datas.size() % pageSize == 0){
getHttpData(pageIndex,pageSize + 1);
pageIndex = pageIndex + 1;
}else{
AppUtil.showToast(getContext(), "已经是最后一页了");
}
}
lay_refresh.finishLoadmore();
}
2.接口返回的数据有分页格式的:
{
"code": 200,
"data": {
"dataList": [
{
"remark": " 新需求",
"rid": "3",
"startStation": "软件路",
}
],
"pageIndex": 1,
"pageRows": 10,
"totalPages": 1,
"totalRows": 1
},
"message": "",
"success": true
}
private void getStudentsData(int pageIndex, int pageSize) {
HttpHelper.executeGet(UrlConstant.STUDENT_LIST(pageIndex, pageSize), new ApiResultCallback<PageList<Student>>() {
@Override
public void onSuccess(PageInfo<Student> data) {
addStudents(data);
}
@Override
public void onFailure(int code, String reason) {
AppUtils.showToast(StudentActivity.this, "获取信息失败:" + code + "," + reason);
}
@Override
public void onFinish() {
finishLoading();
}
});
}
private void addStudents(PageList<Student> data) {
if(currentPage == 0) {
mStuAdapter.clear();
lv_data.setAdapter(new StudentListAdapter(this));
dismissLoadingDialog();
}
if (data != null && data.getCurrent() >= currentPage) {
mStuAdapter.addAll(data.getList());
currentPage = data.getCurrent();
totalPageNum = data.getPages();
}
if (mStuAdapter.getCount() == 0) {
AppUtils.showToast(this, "没有数据");
}
}
因为返回的格式都是固定的,所以封装一下返回的数据
PageInfo类
public class PageInfo<T>{
public int totalRows; //数据总数
public int pageIndex; //第几页
public int pageRows; //每页的数量
public int totalPages; //总页数
public List<T> dataList;
}
activity里:
private int totalPageNum = -1;
private int currentPage = 0;
private int pageRows = 20;
private void refresh(boolean isFirst) {
currentPage = 0;
totalPageNum = -1;
getStudentsData(currentPage + 1, pageRows);
if(isFirst){
showLoadingDialog();
}
}
private void loadMore() {
if (totalPageNum > 0 && currentPage < totalPageNum) {
getStudentsData(currentPage + 1, DATA_SIZE_PER_PAGE);
} else if (totalPageNum < 0) {
refresh(false);
} else {
AppUtils.showToast(this, "已加载全部");
}
}