← 返回首页
JavaSE基础教程(一百零六)
发表时间:2022-08-11 23:05:13
泛型应用-自定义分页类

使用泛型类设计一个分页工具类。

实现代码如下:

import java.util.ArrayList;
import java.util.List;

public class MyPager<T> {
    private List<T> bigList; // 大的集合,外界传入
    private int curentPageIndex = 1; // 当前页号,外界传入
    private int countPerpage = 10; // 每页条数,外界可以设定
    private List<T> smallList; // 小的集合,返回
    private int pageCount; // 页数
    private int recordCount; // 记录条数
    private int prePageIndex; // 上一页序号
    private int nextPageIndex; // 下一页序号
    private boolean firstPage; // 是否第一页
    private boolean lastPage; // 是否最后一页

    public void setCurentPageIndex(int curentPageIndex) { // 每当页数改变,都会调用这个函数,筛选代码可以写在这里
        this.curentPageIndex = curentPageIndex;

        // 上一页,下一页确定
        prePageIndex = curentPageIndex - 1;
        nextPageIndex = curentPageIndex + 1;
        // 是否第一页,最后一页
        if (curentPageIndex == 1) {
            firstPage = true;
        } else {
            firstPage = false;
        }
        if (curentPageIndex == pageCount) {
            lastPage = true;
        } else {
            lastPage = false;
        }
        // 筛选工作
        smallList = new ArrayList<T>();
        for (int i = (curentPageIndex - 1) * countPerpage; i < curentPageIndex
                * countPerpage
                && i < recordCount; i++) {
            smallList.add(bigList.get(i));
        }
    }

    public int getCurentPageIndex() {
        return curentPageIndex;
    }

    public List<T> getBigList() {
        return bigList;
    }

    public void setBigList(List<T> bigList) {
        this.bigList = bigList;
        // 计算条数
        recordCount = bigList.size();
        // 计算页数
        if (recordCount % countPerpage == 0) {
            pageCount = recordCount / countPerpage;
        } else {
            pageCount = recordCount / countPerpage + 1;
        }

    }

    public int getCountPerpage() {
        return countPerpage;
    }

    public void setCountPerpage(int countPerpage) {
        this.countPerpage = countPerpage;
    }

    public List<T> getSmallList() {
        return smallList;
    }

    public void setSmallList(ArrayList<T> smallList) {
        this.smallList = smallList;
    }

    public int getPageCount() {
        return pageCount;
    }

    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }

    public int getRecordCount() {
        return recordCount;
    }

    public void setRecordCount(int recordCount) {
        this.recordCount = recordCount;
    }

    public int getNextPageIndex() {
        return nextPageIndex;
    }

    public void setNextPageIndex(int nextPageIndex) {
        this.nextPageIndex = nextPageIndex;
    }

    public int getPrePageIndex() {
        return prePageIndex;
    }

    public void setPrePageIndex(int prePageIndex) {
        this.prePageIndex = prePageIndex;
    }

    public boolean getFirstPage() {
        return firstPage;
    }

    public void setFirstPage(boolean firstPage) {
        this.firstPage = firstPage;
    }

    public boolean getLastPage() {
        return lastPage;
    }

    public void setLastPage(boolean lastPage) {
        this.lastPage = lastPage;
    }

}

注意:使用该分页工具类,一定要先填充大集合,再设置当前页号,才能得到正确的分页结果。