package cn.feigme.pagination;
import java.util.List;
/**
* @author feigme
*/
public class PaginationSupport {
//默認頁面顯示紀錄的數目
public final static int PAGESIZE = 10;
//頁面實際顯示的紀錄數目
private int pageSize = PAGESIZE;
//頁面上的索引數
private int pageIndexCount = 5;
//總頁數
private int pageCount ;
//紀錄實例集合
private List items;
//總紀錄數
private int totalCount;
//保存當前索引的紀錄數
private int[] indexs = new int[0];
//紀錄起始位
private int startIndex = 1;
/*********************構造函數*************************/
//兩參數的構造函數
public PaginationSupport(List items,int totalCount){
setPageSize(PAGESIZE);
setTotalCount(totalCount);
setItems(items);
setStartIndex(1);
}
//三參數的構造函數
public PaginationSupport(List items,int totalCount,int startIndex){
setPageSize(PAGESIZE);
setTotalCount(totalCount);
setItems(items);
setStartIndex(startIndex);
}
//四條件的構造函數
public PaginationSupport(List items,int totalCount,int startIndex,int pageSize){
setPageSize(pageSize);
setTotalCount(totalCount);
setItems(items);
setStartIndex(startIndex);
}
//五條件的構造函數
public PaginationSupport(List items,int totalCount,int startIndex,int pageSize,int pageIndexCount){
setPageIndexCount(pageIndexCount);
setPageSize(pageSize);
setTotalCount(totalCount);
setItems(items);
setStartIndex(startIndex);
}
/***********************get set方法**************************/
public int[] getIndexs() {return indexs;}
public void setIndexs(int[] indexs) {this.indexs = indexs;}
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 getStartIndex() {return startIndex;}
public void setStartIndex(int startIndex) {
if(startIndex >= this.pageCount) this.startIndex = this.pageCount;
else if(startIndex<=0) this.startIndex = 1;
else this.startIndex = startIndex;
if(getPageIndexCount()>this.pageCount){
setPageIndexCount(this.pageCount);
}
indexs = new int[getPageIndexCount()];
int istart = this.startIndex-getPageIndexCount()/2+(getPageIndexCount()%2>0?0:1);;
int iend = this.startIndex+getPageIndexCount()/2;
if(istart<=0){
istart =1;
iend = getPageIndexCount();
}
if(iend>this.pageCount){
iend = this.pageCount;
istart = this.pageCount - getPageIndexCount()+1;
}
for (int i = 0; i < iend-istart+1; i++) {
indexs[i]= istart+i;
}
}
public int getTotalCount() {return totalCount;}
public void setTotalCount(int totalCount) {
if(totalCount>0){
this.totalCount = totalCount;
this.pageCount = totalCount/pageSize + (totalCount%pageSize>0?1:0);
}else{
this.totalCount = 0;
}
}
public int getPageCount() {return pageCount;}
public void setPageCount(int pageCount) {this.pageCount = pageCount ;}
public int getPageIndexCount() {return pageIndexCount;}
public void setPageIndexCount(int pageIndexCount) {this.pageIndexCount = pageIndexCount;}
//下一頁
public int getNextIndex() {
int nextIndex = getStartIndex() + 1;
if (nextIndex > pageCount)
return pageCount;
else
return nextIndex;
}
//上一頁
public int getPreviousIndex() {
int previousIndex = getStartIndex() - 1;
if (previousIndex <= 0)
return 1;
else
return previousIndex;
}
//第一頁
public int getFirstIndex(){
return 1;
}
//最後一頁
public int getLastIndex(){
return getPageCount();
}
}
做了个简单的测试
java 代码
public static void main(String[] args) {
List items = new ArrayList();
for (int i = 0; i < 10; i++) {
items.add("------------->" + i);
}
int totalCount = 105;
int pageSize = 10;
int startIndex = 11;
int pageIndexCount = 6;
PaginationSupport ps = new PaginationSupport(items, totalCount,
startIndex, pageSize, pageIndexCount);
for (int i = 0; i < ps.getItems().size(); i++) {
System.out.println(ps.getItems().get(i));
}
System.out.println("共有" + ps.getTotalCount() + "條紀錄");
System.out.println("當前第" + ps.getStartIndex() + "頁");
System.out.println("共" + ps.getPageCount() + "頁");
System.out.println("第一頁" + ps.getFirstIndex());
System.out.println("上一頁" + ps.getPreviousIndex());
for (int i = 0; i < ps.getIndexs().length; i++) {
System.out.println(ps.getIndexs()[i]);
}
System.out.println("下一頁" + ps.getNextIndex());
System.out.println("最後一頁" + ps.getLastIndex());
}
分享到:
相关推荐
Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类
在这个“windchill开发公用类”中,我们很显然关注的是与Windchill系统相关的编程和开发工作。在进行Windchill开发时,公用类通常是一些预定义的代码模块,可以被多次复用,以提高效率和代码的可维护性。 在...
《C# .Net公用类详解及应用》 在.NET框架中,C#语言以其强大的功能和易用性,成为开发Windows应用程序的首选工具。而C#中的公用类库则是开发者们构建高效、可复用代码的重要基石。本资料集包含了"C# .Net公用类(超...
java公用类,sql基础类等,为使用者提供便利,更好的开发程序
伍华聪贡献的“DotNet公用类(超多附文档)”是.NET开发者社区的一个重要资源。它体现了.NET开发者在代码复用和效率提升方面的探索和努力。通过这个资源包,开发者可以访问一系列实用的.NET类,这些类覆盖了.NET平台...
在标题和描述中提到的"Spring+Hibernate实现)Hibernate公用类",实际上是指创建一个泛化的DAO接口(EntityDao)和它的实现类(EntityDaoImpl)。这样的设计模式可以避免为每个数据模型(如User、News、Company)都...
### C#数据库操作公用类详解 #### 概述 在.NET框架中,处理数据库操作时,经常需要编写重复性高的代码来实现基本的数据访问功能,如读取、写入、更新等。为了提高代码的复用性和降低维护成本,通常会创建一个通用的...
针对时间日期各种格式之间转换等操作的公用类。
这个公用类的出现,是为了简化开发者在实现图表统计功能时的工作,提供了一种高效、便捷的方式来创建和定制各种复杂的图表。 在.NET框架中,Dundas WebChart控件提供了丰富的图表类型,包括但不限于柱状图、折线图...
在ASP.NET项目中,为了提高代码复用率和开发效率,开发者常常会创建一些帮助工具类(Helper Classes)或公用类(Utility Classes)。这些类通常包含一系列静态方法,可以处理各种通用任务,如数据验证、文件操作、...
本文实例分析了thinkphp3.2.2前后台公用类架构问题。分享给大家供大家参考。具体分析如下: 3.13之前好多项目都使用前后台公用类,在lib/action下创建Baseaction做为公共继承类,发现3.2.2里面很多人都用A调用,这样...
在C#编程中,公用帮助类(Public Helper Classes)是一种常见的设计模式,它们提供了一系列静态方法,用于解决各种通用问题,比如数据验证、日期时间处理、字符串操作等。这些类通常被设计为不可实例化,以确保它们...
java中字节的各级单位相互转换的公用方法的公用类
除了基本的文件操作,还有其他类型的公用对话框,比如`ColorDialog`用于选择颜色,`FontDialog`用于选择字体,`PrintDialog`用于设置打印参数,以及`PageSetupDialog`用于调整打印页面的布局。这些对话框都遵循统一...
【标题】:“[转] 在发布一个鼠标右键的公用类” 这篇博客文章分享的是关于创建和使用一个通用的鼠标右键处理类的技巧。在计算机编程,尤其是GUI(图形用户界面)应用开发中,鼠标事件是用户交互的重要部分。这篇...
C#常用类库源代码,非常全面,我们在开发程序的过程中再也不用到处去寻找各种功能的代码了,这里面包含了绝大部分开发中常用的功能的源代码,简单复制粘贴即可实现功能,省去你大量的开发时间,本人一直用它,非常...
在"ABAP2XLSX+封装EXCEL 打印的公用类"的场景中,我们可能涉及到的是一个专门设计的公共类(ZCL_COMMON),它利用了ABAP2XLSX的功能,并进一步封装了生成和打印Excel文件的逻辑,以便在不同的业务场景下重复使用。...
红旗传媒机构入职培训--公用类.pptx
这使得公用事业行业相对其他行业具有一定的防御性,投资者在市场波动时往往倾向于投资这类行业以降低风险。 市场数据是行业分析不可或缺的一部分。周报中提到了一些关键的市场数据,包括市盈率、各主要指数的点位等...
* mysql数据库的通用操作类 * 主要包括查询结果集并封装成list的形式 * 数据库的插入、更新、删除操作(两种方式,包含事物的处理和不包含事物的处理) * 注意:在查询结果封装成list的方法中 * 实体类的字段 ...