封装-分页功能的封装

使用

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


}

发布了167 篇原创文章 · 获赞 62 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/AdrianAndroid/article/details/100580524