`
jef
  • 浏览: 117199 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个分页支持类

 
阅读更多
参考了http://www.iteye.com/article/14657?page=3#comments文章中的PaginationSupport类实现,略微扩展了一下。

import java.util.List;

/**
 * 	ps.getItems()得到已分页好的结果集 
 *		ps.getIndexes()得到分页索引的数组 
 *		ps.getTotalCount()得到总结果数 
 *		ps.getStartIndex()当前分页索引 
 *		ps.getNextIndex()下一页索引 
 *		ps.getPreviousIndex()上一页索引
 *     @see http://www.iteye.com/article/14657?page=3#comments
 */
public class PageSupport {
  
    public final static int PAGESIZE = 30;   
  
    private int pageSize = PAGESIZE;
  
    private List items;
  
    private int totalCount;   
  
    private int[] indexes = new int[0];   
  
    private int startIndex = 0;
  
    public PageSupport(List items, int totalCount) {
        setPageSize(PAGESIZE);
        setTotalCount(totalCount);   
        setItems(items);
        setStartIndex(0);   
    }
  
    public PageSupport(List items, int totalCount, int startIndex) { 
        setPageSize(PAGESIZE);   
        setTotalCount(totalCount);   
        setItems(items);           
        setStartIndex(startIndex);   
    }
  
    public PageSupport(List items, int totalCount, int pageSize, int startIndex) {
        setPageSize(pageSize);   
        setTotalCount(totalCount);   
        setItems(items);   
        setStartIndex(startIndex);   
    } 
      
    public List getItems() {
        return items;   
    }
  
    public void setItems(List items) {   
        this.items = items;   
    }
  
    public int getPageSize() {
        return pageSize;   
    }   
  
    public void setPageSize(int pageSize) {   
        this.pageSize = pageSize;   
    }   
  
    public int getTotalCount() {   
        return totalCount;   
    }   
  
    public void setTotalCount(int totalCount) {   
        if (totalCount > 0) {   
            this.totalCount = totalCount;   
            // 81/10 = 8 
            int count = totalCount / pageSize;   
            if (totalCount % pageSize > 0)   
                count++;   
            indexes = new int[count];   
            for (int i = 0; i < count; i++) {   
                indexes[i] = pageSize * i;   
            }   
        } else {   
            this.totalCount = 0;   
        }   
    }   
  
    public int[] getIndexes() {   
        return indexes;   
    }   
  
    public void setIndexes(int[] indexes) {   
        this.indexes = indexes;   
    }   
  
    public int getStartIndex() {   
        return startIndex;   
    }   
  
    public void setStartIndex(int startIndex) {   
        if (totalCount <= 0)   
            this.startIndex = 0;   
        else if (startIndex >= totalCount)   
            this.startIndex = indexes[indexes.length - 1];   
        else if (startIndex < 0)   
            this.startIndex = 0;   
        else {   
            this.startIndex = indexes[startIndex / pageSize];   
        }   
    }   
  
    public int getNextIndex() {
        int nextIndex = getStartIndex() + pageSize;   
        if (nextIndex >= totalCount)   
            return getStartIndex();   
        else  
            return nextIndex;
    }
  
    public int getPreviousIndex() {   
        int previousIndex = getStartIndex() - pageSize;   
        if (previousIndex < 0)   
            return 0;   
        else  
            return previousIndex;   
    }
    
    
    //--------------------------------------------------------------
    
    /**
     * 末页索引
     */
    public int getLastIndex(){
    	return getIndexes()[getIndexes().length-1];
    }
    
    /**
     * 分页总数
     */
    public int getTotalPageNum(){
    	return getIndexes().length;
    }
    
    /**
     * 获得当前页码
     */
    public int getCurrentPageNum(){
    	int[] indexs = getIndexes();
    	int startIndex = getStartIndex();
    	int i=0;
    	for(i=0;i<indexs.length;i++){
    		if(startIndex == indexs[i])
    			break;
    	}
    	return (i+1);
    }
    
    /**
     * 根据页码获得分页索引值 pagenum>=1
     */
    public int getIndexByPageNum(int pagenum){
    	if(pagenum<=1)
    		return 0;
    	if(pagenum>getTotalPageNum())
    		return getLastIndex();
    	return getIndexes()[pagenum-1];
    }
    
    public boolean hasPreviousPage(){
    	return getStartIndex()==0?false:true;
    }
    
    public boolean hasNextPage(){
    	return (getCurrentPageNum() == getTotalPageNum())?false:true;
    }
    
    private String queryString = null;

	public String getQueryString() {
		return queryString;
	}

	public void setQueryString(String queryString) {
		this.queryString = queryString;
	}
  
}  
分享到:
评论

相关推荐

    叶子asp分页类(好用)

    Descript: ASP分页类,支持access/mssql/mysql/sqlite Contact: QQ:311673 MSN:myehe@msn.com GT:mmyehe@gmail.com WebSite: http://www.yehe.org http://www.showo.com Licenses: 本程序遵循GPL协议. 协议原文地址:...

    php完美分页类支持ajax等多种分页模式

    该分页系他人书写,本人修改! 附带详细使用方法 以及函数说明!可直接用于php项目 !支持多种分页方式!

    php完美分页类,支持无限分页,简洁大气样式,包你好用

    php完美分页类,支持无限分页,简洁大气样式,包你好用

    叶子asp分页类0.12

    Descript: ASP分页类,支持access/mssql/mysql/sqlite Contact: QQ:311673 MSN:myehe@msn.com GT:mmyehe@gmail.com WebSite: http://www.yehe.org http://www.showo.com -----------------------------------------...

    php自定义分页类

    自定义php分页类,支持纯php,tp3.2,tp5.0,使用时只需引入分页类,按照demo编写即可

    php分页类,支持两种数据库类型

    自己写的一个php分页类,支持mysql和mysqli两种数据库类型,分页条数可以控制,采用一面向对象的方式写的,调用方法即可以用

    一个对html表格分页的类

    可以将一个已经生成的html表格转化成可分页和查询的表格 完全用js实现不涉及任何后台技术,不支持ajax。

    PHP超好用的分页类,支持两个模式

    这是一个简单的PHP分页显示类,目前支持两种分页模式。一种是最简单的普通分页模式[首页] [上页] [下页] [尾页]模式,另一种是经典分页模式,即:[1][2][3][4][5][6][7][8][9][10][下一页][尾页]。 使用方法 ...

    MVC分页工具类源码

    一个用于MVC分页的工具类,支持HTML分页,AJAX分页,Microsoft Ajax分页

    php 分页类 源码

    php 分页类源码,包含了多种样式,简单易用,支持ajax

    不错的Php分页类,支持ajax

    不错超强的Php分页类,支持ajax,不错超强的Php分页类,支持ajax,

    PHP分页类支持多样式

    阿里上找的PHP分页类。调用方便。支持20多种样式。

    php多功能分页类 class

    这是一个PHP的分页类,支持多种分类方式,使用方法在文件内。

    php 图片按钮 分页类

    这个分页类是我收集到的PHP分页类效率最高的,并且它还支持图片的形势,本人测试通过完全可用!

    ASP通用多风格分页类 支持多种样式翻页

    非常好用的分页类,很容易定制各种风格,可以与网上流行的 《24款超实用的Web 2.0风格翻页页码css代码》 完美无缝连接。你所做的,就是改个div的名字而已。另外懂点儿CSS的朋友甚至可以轻松实现仿Google的翻页样式。

    PHP分页类--支持URL和POST两种

    PHP分页类,使用方便, 避免在页面上分页那样不能做到样式和外观上一改全改的弱点。 这次经过本人修改,可以支持URL、POST两种: 对于页面需要速度的,用URL分页会更快一些。对于页面查询条件较多,而且查询条件是...

    仿aspnetpager的一个php分页类

    仿aspnetpager的一个php分页类 有以下几个简单的功能: 1:支持相关按钮的显示与否配置 2:支持每页数目,文本名称,html标签类名称的自由配置 3:支持url重写过的页面(需自己在配置数组中添加重写规则)

    支持多风格变换的ASP分页类

    支持多风格变换的ASP分页类

    Access分页帮助类

    Access分页帮助类。此工具很好的支持Access翻页功能。

    Asp.net C#通用分页类

    但是我用过的几个控件,本身都要执行SQL,对存储过程支持不好,为了方便,特别写了个通用分页类,利用PagedDataSource来实现DataGrid,DataList,Repeater的分页。 完成上一页,下一页,最后一页,最前一页,总页数...

Global site tag (gtag.js) - Google Analytics