取出当前页码为中心的5个页码
页码: 1 2 3 4 5 6 7 8 9 10 11
例1: 当前页码1 取出的值 1 2 3 4 5
例2: 当前页码2 取出的值 1 2 3 4 5
例3: 当前页码5 取出的值 3 4 5 6 7 8
例4: 当前页码10 取出 的值 7 8 9 10 11
/**
* 求出页码列表,使页码处于正中间
*
* @param page
* 当前查询页
* @param num
* 每页数量
* @param count
* 记录总数
* @return
*/
public ArrayList<Integer> pagingUtil(int page, int num, int count) {
// 页码序列长度(只测试过奇数)
final int LENGTH = 5;
// 边界
final int MARGIN = LENGTH / 2;
// 存储页码序列
ArrayList<Integer> list = new ArrayList<Integer>();
// 总页数
int pageCount;
if (count % num > 0) {
pageCount = count / num + 1;
} else {
pageCount = count / num;
}
// 当前查询的页码超过总页码
if (page > pageCount) {
return list;
}
if (pageCount >= LENGTH) {
// 两边至少有两个
if (pageCount - page >= MARGIN && page - 1 >= MARGIN) {
int testNum = page - MARGIN;
for (int i = 0; i < LENGTH; i++) {
list.add(testNum++);
}
return list;
}
// 左边没有够两个
if (page - 1 < MARGIN) {
for (int i = 0; i < LENGTH; i++) {
list.add(i, i + 1);
}
return list;
}
// 右边没有够两个
if (pageCount - page < MARGIN && page <= pageCount) {
int a = 0;
for (int i = pageCount - LENGTH; i < pageCount; i++) {
list.add(a++, i + 1);
}
return list;
}
} else {
for (int i = 0; i < pageCount; i++) {
list.add(i, i + 1);
}
return list;
}
return list;
}