数据分页

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, "已加载全部");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值