Java分頁工具

 Java分頁工具

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

/**
 * 分頁
 */
public class PageUtil<T>{

    /**
     * 所有的記錄
     */
    private List<T> allList=null;
    /**
     * 每頁需要顯示的數據
     */
    private List<T> pageList=null;
    /**
     * 所有記錄總條數
     */
    private int sum=0;
    //每頁顯示記錄條數
    private int per_record;
    /**
     * 總頁數
     */
    private int page_counts=0;
    /**
     * 當前頁
     */
    private int this_page=0;

    public PageUtil(List<T> list,int currentPage,int pageSize) {
        //配置每頁顯示記錄數
        this.per_record=pageSize;
        //配置所有記錄
        this.allList=list;
        //配置記錄總數
        this.sum=this.allList.size();
        //配置總頁數
        calculatePerRecord();
        //配置當前頁頁碼
        setThisPage(currentPage);
        //配置當前頁記錄
        setThisList();


    }
    /**
     *
     * @Description:<p>配置當前頁頁碼</p>
     */
    public void setThisPage(int Page) {
        if(Page<=1) {
            Page=1;
        }else if(Page>=this.page_counts) {
            Page=this.page_counts;
        }
        //內部真正頁碼是從0開始 所以減一
        this.this_page =Page-1;
        //每次設置頁碼的時候都從新配置一下當前頁的數據
        setThisList();
    }
    /**
     *
     * @Description:<p>計算總頁數</p>
     */
    private void calculatePerRecord() {
        //如果所有記錄list爲空,直接終止計算
        if(this.getAllList()==null) {
            return ;
        }
        //如果所有記錄剛剛好整除每頁顯示的記錄條數
        int sumPage=this.sum/this.per_record;
        //否則就多了一頁不完全頁
        if(this.sum%this.per_record>0) {
            ++sumPage;
        }
        this.page_counts = sumPage;
    }

    /**
     *
     * @Description:<p>配置當前頁是數據</p>
     */
    private void setThisList(){
        //每頁開始索引
        int index_start=this.this_page*this.per_record;
        //每頁結束索引
        int index_end=(this.this_page+1)*this.per_record>this.allList.size()?
                this.allList.size():(this.this_page+1)*this.per_record;
        //存數據進當前頁之前 先清空當前頁的數據
        this.pageList=new ArrayList();

        for (int i = index_start; i <index_end; ++i) {
            this.pageList.add(this.allList.get(i));
        }
    }

    public List<T> getAllList() {
        return allList;
    }
    public List<T> getPageList() {
        return pageList;
    }
    public int getSum() {
        return sum;
    }
    public int getPer_record() {
        return per_record;
    }
    /**
     *
     * @Description:<p>配置每頁顯示的記錄條數</p>
     */
    public void setPer_record(int per_record) {
        this.per_record = per_record;
        //重新配置每頁顯示的記錄條數後,需要重新配置總頁數和當前頁的記錄
        setThisList();
        calculatePerRecord();
    }

    public int getPage_counts() {
        return page_counts;
    }
    public int getThis_page() {
        return this_page+1;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章