无线&移动互联网技术研发

换位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

java List 分页应用(二)

Posted on 2010-01-10 02:22 Gavin.lee 阅读(606) 评论(0)  编辑  收藏 所属分类: java SE & EE
应用类:
package com.Gavin.tools.util;

import java.util.*;

/**
 * 为List分页
 * 样式比较简单,适合WAP使用,直接输出页码到页面
 
*/


public class PagerUtil {
    
private int pageSize = 10;// 每页大小
    
    
private int nextPage;// 下一页
    
    
private int prePage;// 前一页
    
    
private int pageCount;// 总页数
    
    
private int currentPage;// 当前页
    
    
private int listSize = 0;// 记录总数
    
    
private ArrayList alist = new ArrayList();
    
    
private String url;

    
    
/**
     * 初始化记录列表
     * 
@param it Iterator
     * 
@return ArrayList
     
*/

    
public ArrayList getAlist(Iterator it) {
        ArrayList al 
= new ArrayList();
        
while (it.hasNext()) {
            al.add(it.next());
        }

        
return al;
    }


    
/**
     * 构造方法
     * 
@param list Collection
     
*/

    
public PagerUtil(Collection list) {
        alist 
= this.getAlist(list.iterator());
        listSize 
= alist.size();
        nextPage 
= 1;
        prePage 
= 0;
        pageCount 
= listSize / pageSize + 1;
        currentPage 
= 1;
    }


    
/**
     * 构造方法
     * 
@param list Collection
     * 
@param pageSize int
     
*/

    
public PagerUtil(Collection list, int pageSize) {
        alist 
= (ArrayList) list;
        
this.pageSize = pageSize;
        listSize 
= alist.size();
        nextPage 
= 1;
        prePage 
= 0;
        pageCount 
= listSize / pageSize;
        
if (listSize % pageSize > 0{
            pageCount 
= pageCount + 1;
        }

        currentPage 
= 1;
    }


    
public PagerUtil(Vector v, int pageSize) {
        
for (int i = 0; i < v.size(); i++{
            alist.add(v.get(i));
        }

        
this.pageSize = pageSize;
        listSize 
= alist.size();
        nextPage 
= 1;
        prePage 
= 0;
        pageCount 
= listSize / pageSize;
        
if (listSize % pageSize > 0{
            pageCount 
= pageCount + 1;
        }

        currentPage 
= 1;
    }


    
/**
     * 下一页
     * 
@return ArrayList
     
*/

    
public int nextPage() {
        
int tempInt = 1;
        
if (currentPage < this.getPageCount() && currentPage >= 1{
            tempInt 
= currentPage + 1;
        }
 else
            tempInt 
= 1;
        
return tempInt;
    }


    
/**
     * 前一页
     * 
@return ArrayList
     
*/

    
public int prePage() {
        
int tempInt = 1;

        
if (currentPage > 1{
            tempInt 
= currentPage - 1;
        }
 else
            tempInt 
= this.getPageCount();
        
return tempInt;
    }


    
/**
     * 第一页
     * 
@return ArrayList
     
*/

    
public int firstPage() {
        nextPage 
= 1;
        prePage 
= this.getPageCount();
        currentPage 
= nextPage;
        
return currentPage;
    }


    
/**
     * 最后一页
     * 
@return ArrayList
     
*/

    
public int endPage() {
        nextPage 
= this.getPageCount();
        prePage 
= nextPage - 1;
        currentPage 
= nextPage;
        
return currentPage;
    }


    
/**
     * 根据当前页得到记录列表
     * 
@param currentPage int
     * 
@return ArrayList
     
*/

    
public ArrayList getPageList() {
        ArrayList tempList 
= new ArrayList();
        
for (int i = (currentPage - 1* pageSize; i < (currentPage - 1)
                
* pageSize + pageSize; i++{
            
if (i >= 0 && i < this.alist.size()) {
                tempList.add(alist.get(i));
            }
 else
                
break;
        }

        
return tempList;
    }


    
public String getPageCtrlString() {
        String strCtrl 
= "";
        
if (this.currentPage == 1{
            
//strCtrl = "首页 ";
        }
 else {
            strCtrl 
= "<a href='" + url + "?page=1'>首页</a> ";
        }

        
if (this.currentPage == 1{
            
//strCtrl = strCtrl + "上一页 ";
        }
 else {
            strCtrl 
= strCtrl + "<a href='" + url + "?page=" + this.prePage() + "'>上页</a> ";
        }

        
if (this.currentPage == this.pageCount) {
            
//strCtrl = strCtrl + "下一页 ";
        }
 else {
            strCtrl 
= strCtrl + "<a href='" + url + "?page=" + this.nextPage() + "'>下页</a> ";
        }

        
if (this.currentPage == this.pageCount) {
            
//strCtrl = strCtrl + "末页 ";
        }
 else {
            strCtrl 
= strCtrl + "<a href='" + url + "?page=" + this.getPageCount() + "'>末页</a> ";
        }

        strCtrl 
= strCtrl + "\n\r";        //换行
//        strCtrl = strCtrl
//                + "跳到 <select name='toPage' onChange=\"window.location='" + url
//                + "?page='+this.options[this.selectedIndex].value;\">";
        if(this.getPageCount() <= 1{
            
        }
 else if(this.getPageCount() <= 7{
            
for (int i = 1; i <= this.getCurrentPage(); i++{
                
if (i == this.getCurrentPage()) {
                    strCtrl 
= strCtrl + "<b>" + i + "</b> ";
                }
 else {
                    strCtrl 
= strCtrl + "<a href='" + url + "?page=" + i + "'>" + i + "</a> ";
                }

            }

        }
 else if(4 < this.getCurrentPage() && this.getCurrentPage() < (this.getPageCount() - 3)) {
            
for (int i = this.getCurrentPage() - 3; i <= this.getCurrentPage() + 3; i++{
                
if (i == this.getCurrentPage()) {
                    strCtrl 
= strCtrl + "<b>" + i + "</b> ";
                }
 else {
                    strCtrl 
= strCtrl + "<a href='" + url + "?page=" + i + "'>" + i + "</a> ";
                }

            }

        }
 else if(this.getCurrentPage() <= 4{
            
for (int i = 1; i <= 7; i++{
                
if (i == this.getCurrentPage()) {
                    strCtrl 
= strCtrl + "<b>" + i + "</b> ";
                }
 else {
                    strCtrl 
= strCtrl + "<a href='" + url + "?page=" + i + "'>" + i + "</a> ";
                }

            }

        }
 else if((this.getPageCount() - 6<= this.getCurrentPage()) {
            
for (int i = this.getPageCount() - 6; i <= this.getPageCount(); i++{
                
if (i == this.getCurrentPage()) {
                    strCtrl 
= strCtrl + "<b>" + i + "</b> ";
                }
 else {
                    strCtrl 
= strCtrl + "<a href='" + url + "?page=" + i + "'>" + i + "</a> ";
                }

            }

        }
 else {
            
for (int i = this.getCurrentPage() - 3; i <= this.getCurrentPage() + 3; i++{
                
if (i == this.getCurrentPage()) {
                    strCtrl 
= strCtrl + "<b>" + i + "</b> ";
                }
 else {
                    strCtrl 
= strCtrl + "<a href='" + url + "?page=" + i + "'>" + i + "</a> ";
                }

            }

        }

        
        strCtrl 
= strCtrl + "\n\r";        //换行
        strCtrl = strCtrl + "当前" + this.getCurrentPage() + "/" + this.getPageCount() + "页 每页" 
            
+ this.getPageSize() + "条 共" + this.listSize + "";
        
return strCtrl;
    }

    
    
public int getCurrentPage() {
        
return currentPage;
    }


    
public int getNextPage() {
        
return nextPage;
    }


    
public int getPageCount() {
        
return pageCount;
    }


    
public int getPageSize() {
        
return pageSize;
    }


    
public int getPrePage() {
        
return prePage;
    }


    
public String getUrl() {
        
return url;
    }


    
public void setPrePage(int prePage) {
        
this.prePage = prePage;
    }


    
public void setPageSize(int pageSize) {
        
this.pageSize = pageSize;
    }


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


    
public void setNextPage(int nextPage) {
        
this.nextPage = nextPage;
    }


    
public void setCurrentPage(int currentPage) {
        
if (currentPage > this.getPageCount()) {
            
this.currentPage = this.getPageCount();
        }
 else if (currentPage < 0{
            
this.currentPage = 1;
        }
 else {
            
this.currentPage = currentPage;
        }

    }


    
public void setUrl(String url) {
        
this.url = url;
    }

    
}


测试类:
package com.Gavin.tools.util;

import java.util.ArrayList;

public class TestPagrUtil {
    
public static void main(String args[]) {
        ArrayList al 
= new ArrayList();
        al.add(
"a");
        al.add(
"b");
        al.add(
"c");
        al.add(
"d");
        al.add(
"e");
        al.add(
"f");
        al.add(
"g");
        al.add(
"h");
        al.add(
"i");
        al.add(
"j");
        al.add(
"k");
        al.add(
"l");
        al.add(
"m");
        al.add(
"n");

        PagerUtil autopage 
= new PagerUtil(al,1);
        autopage.setCurrentPage(
5);
        autopage.setUrl(
"/page/user/account/isprize.jsp");
        ArrayList currentPageList 
= autopage.getPageList();        
        String ctrlStr 
= autopage.getPageCtrlString();
        
        
for(Object o: currentPageList) {
            System.out.println(o.toString());
        }

        System.out.println(ctrlStr);
    }

}

//
//e
//<a href='/page/user/account/isprize.jsp?page=1'>首页</a> <a href='/page/user/account/isprize.jsp?page=4'>上页</a> <a href='/page/user/account/isprize.jsp?page=6'>下页</a> <a href='/page/user/account/isprize.jsp?page=14'>末页</a> 
//
//<a href='/page/user/account/isprize.jsp?page=2'>2</a> <a href='/page/user/account/isprize.jsp?page=3'>3</a> <a href='/page/user/account/isprize.jsp?page=4'>4</a> <b>5</b> <a href='/page/user/account/isprize.jsp?page=6'>6</a> <a href='/page/user/account/isprize.jsp?page=7'>7</a> <a href='/page/user/account/isprize.jsp?page=8'>8</a> 
//
//当前5/14页 每页1条 共14条

只有注册用户登录后才能发表评论。


网站导航: