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

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

java List 分页应用(一)

Posted on 2010-01-09 14:35 Gavin.lee 阅读(5102) 评论(1)  编辑  收藏 所属分类: java SE & EE
应用类:
package com.Gavin.tools.util;

/**  
 * List分页
 * 实现:利用List的获取子List方法,实现对List的分页
 * 
@author 显武
 * @date 2010-1-8 16:27:31
 * 
 
*/


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

public class PageModel {
    
private int page = 1// 当前页

    
public int totalPages = 0// 总页数

    
private int pageRecorders;// 每页5条数据

    
private int totalRows = 0// 总数据数

    
private int pageStartRow = 0;// 每页的起始数

    
private int pageEndRow = 0// 每页显示数据的终止数

    
private boolean hasNextPage = false// 是否有下一页

    
private boolean hasPreviousPage = false// 是否有前一页

    
private List list;

    
// private Iterator it;

    
public PageModel(List list, int pageRecorders) {
        init(list, pageRecorders);
// 通过对象集,记录总数划分
    }

    
    
/**
     * 初始化list,并告之该list每页的记录数
     * 
@param list
     * 
@param pageRecorders
     
*/

    
public void init(List list, int pageRecorders) {
        
this.pageRecorders = pageRecorders;
        
this.list = list;
        totalRows 
= list.size();
        
// it = list.iterator();
        hasPreviousPage = false;
        
if ((totalRows % pageRecorders) == 0{
            totalPages 
= totalRows / pageRecorders;
        }
 else {
            totalPages 
= totalRows / pageRecorders + 1;
        }


        
if (page >= totalPages) {
            hasNextPage 
= false;
        }
 else {
            hasNextPage 
= true;
        }


        
if (totalRows < pageRecorders) {
            
this.pageStartRow = 0;
            
this.pageEndRow = totalRows;
        }
 else {
            
this.pageStartRow = 0;
            
this.pageEndRow = pageRecorders;
        }

    }



    
// 判断要不要分页
    public boolean isNext() {
        
return list.size() > 5;
    }


    
public void setHasPreviousPage(boolean hasPreviousPage) {
        
this.hasPreviousPage = hasPreviousPage;
    }


    
public String toString(int temp) {
        String str 
= Integer.toString(temp);
        
return str;
    }


    
public void description() {

        String description 
= "共有数据数:" + this.getTotalRows() +

        
"共有页数: " + this.getTotalPages() + 

        
"当前页数为:" + this.getPage() +

        
" 是否有前一页: " + this.isHasPreviousPage() +

        
" 是否有下一页:" + this.isHasNextPage() +

        
" 开始行数:" + this.getPageStartRow() +

        
" 终止行数:" + this.getPageEndRow();

        System.out.println(description);
    }


    
public List getNextPage() {
        page 
= page + 1;

        disposePage();

        System.out.println(
"用户凋用的是第" + page + "");
        
this.description();
        
return getObjects(page);
    }


    
/**
     * 处理分页
     
*/

    
private void disposePage() {

        
if (page == 0{
            page 
= 1;
        }


        
if ((page - 1> 0{
            hasPreviousPage 
= true;
        }
 else {
            hasPreviousPage 
= false;
        }


        
if (page >= totalPages) {
            hasNextPage 
= false;
        }
 else {
            hasNextPage 
= true;
        }

    }


    
public List getPreviousPage() {

        page 
= page - 1;

        
if ((page - 1> 0{
            hasPreviousPage 
= true;
        }
 else {
            hasPreviousPage 
= false;
        }

        
if (page >= totalPages) {
            hasNextPage 
= false;
        }
 else {
            hasNextPage 
= true;
        }

        
this.description();
        
return getObjects(page);
    }


    
/**
     * 获取第几页的内容
     * 
     * 
@param page
     * 
@return
     
*/

    
public List getObjects(int page) {
        
if (page == 0)
            
this.setPage(1);
        
else
            
this.setPage(page);
        
this.disposePage();
        
if (page * pageRecorders < totalRows) {// 判断是否为最后一页
            pageEndRow = page * pageRecorders;
            pageStartRow 
= pageEndRow - pageRecorders;
        }
 else {
            pageEndRow 
= totalRows;
            pageStartRow 
= pageRecorders * (totalPages - 1);
        }


        List objects 
= null;
        
if (!list.isEmpty()) {
            objects 
= list.subList(pageStartRow, pageEndRow);
        }

        
//this.description();
        return objects;
    }


    
public List getFistPage() {
        
if (this.isNext()) {
            
return list.subList(0, pageRecorders);
        }
 else {
            
return list;
        }

    }


    
public boolean isHasNextPage() {
        
return hasNextPage;
    }



    
public void setHasNextPage(boolean hasNextPage) {
        
this.hasNextPage = hasNextPage;
    }



    
public List getList() {
        
return list;
    }



    
public void setList(List list) {
        
this.list = list;
    }



    
public int getPage() {
        
return page;
    }



    
public void setPage(int page) {
        
this.page = page;
    }



    
public int getPageEndRow() {
        
return pageEndRow;
    }



    
public void setPageEndRow(int pageEndRow) {
        
this.pageEndRow = pageEndRow;
    }



    
public int getPageRecorders() {
        
return pageRecorders;
    }



    
public void setPageRecorders(int pageRecorders) {
        
this.pageRecorders = pageRecorders;
    }



    
public int getPageStartRow() {
        
return pageStartRow;
    }



    
public void setPageStartRow(int pageStartRow) {
        
this.pageStartRow = pageStartRow;
    }



    
public int getTotalPages() {
        
return totalPages;
    }



    
public void setTotalPages(int totalPages) {
        
this.totalPages = totalPages;
    }



    
public int getTotalRows() {
        
return totalRows;
    }



    
public void setTotalRows(int totalRows) {
        
this.totalRows = totalRows;
    }



    
public boolean isHasPreviousPage() {
        
return hasPreviousPage;
    }


}


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

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

public class TestPagerModel {
    
public static void main(String args[]) {
        List
<String> list = new ArrayList<String>();
        list.add(
"a");
        list.add(
"b");
        list.add(
"c");
        list.add(
"d");
        list.add(
"e");
        list.add(
"f");
        list.add(
"g");
        list.add(
"h");
        list.add(
"h");
        list.add(
"i");
        list.add(
"j");
        list.add(
"k");
        list.add(
"l");
        list.add(
"m");
        PageModel pm 
= new PageModel(list, 5);
        
        List sublist 
= pm.getObjects(3);
        
for(int i = 0; i < sublist.size(); i++{
            System.out.println(sublist.get(i));
        }

        System.out.println(sublist.get(
0));
    }


}


评论

# re: java List 分页应用(一)  回复  更多评论   

2014-10-17 16:27 by ss
ss

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


网站导航: