package jeffli_10
;import java.
util.
ArrayList;import java.
util.
List;/** 分页类:根据总记录数和分页大小对 {@link List} 进行分页处理 */public class Pagination
{ public static final int DEFAULT_PAGE_SIZE = 10;
private int rowCount; private int currentPage; private int pageSize; private int pageCount;
private List<?> list;
public Pagination(List<?> list)
{ this(list, DEFAULT_PAGE_SIZE);
}
public Pagination(List<?> list, int pageSize)
{ this.currentPage = 1; this.list = list; this.rowCount = list.size();
setPageSize(pageSize);
}
private void adjustPageCount()
{
pageCount = (rowCount + pageSize - 1) / pageSize;
}
/** 获取要分页的 {@link List} */
public List<?> getList()
{ return list;
}
/** 获取的 {@link List} 当前页内容 */
public List<?> getCurrentList()
{
List<?> currentList = null;
if(currentPage >= 1 && currentPage <= pageCount)
{ int index = (currentPage - 1) * pageSize;
currentList = list.subList(index, (currentPage < pageCount) ? (index + pageSize) : rowCount);
} return currentList;
}
/** 获取当前页号(从 1 开始) */
public int getCurrentPage()
{ return currentPage;
} /** 设置当前页号(从 1 开始) */
public boolean setCurrentPage(int page)
{ if(page >= 1 && page <= pageCount)
{
currentPage = page; return true;
}
return false;
}
/** 转到下一页 */
public boolean nextPage()
{ return setCurrentPage(currentPage + 1);
} /** 转到上一页 */
public boolean prePage()
{ return setCurrentPage(currentPage - 1);
} /** 获取分页大小 */
public int getPageSize()
{ return pageSize;
} /** 设置分页大小 */
public void setPageSize(int size)
{ if(size <= 0)
size = DEFAULT_PAGE_SIZE;
int index = (currentPage - 1) * pageSize;
pageSize = size;
if(index > pageSize)
currentPage = (index + pageSize - 1) / pageSize; else
currentPage = 1;
adjustPageCount();
} /** 获取总页数 */
public int getPageCount()
{ return pageCount;
}
public static void main
(String[] args
)
{ final int PAGE_SIZE = 10; final int LIST_SIZE = 39;
List<Integer> list = new ArrayList<Integer>(); for(int i = 1; i <= LIST_SIZE; i++)
list.add(i);
Pagination pg = new Pagination(list, PAGE_SIZE);
for(int i = 1; i <= pg.getPageCount(); i++)
{
pg.setCurrentPage(i);
System.
out.
println(pg.
getCurrentList());
}
}
}//源代码片段来自云代码http://yuncode.net
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
[21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
[31, 32, 33, 34, 35, 36, 37, 38, 39]//源代码片段来自云代码http://yuncode.net