google 显示分页数
介绍:根据当前页数、最大页数,显示需要输出的页数集合
相关参数:当前页、最大页数
输出结果:页数集合
要求:
1.一次显示10页
2.显示页数的范围以当前页中点,向前取5页、向后取4页,
如当前页码是10则输出 5、6、7、8、9、
10、11、12、13、14
3.如当前页向前不足5页时,则向后取时进行补充(补充时页数不能超过最大页)
如当前页码是3则输出 1、2、
3、4、5、6、7、8、9、10
4.如当前页向后不足5页时,则向前取时进行补充(补充时页数不能小于第一页)
如当前页码是13则输出 6、7、8、9、10、11、12、
13、14 、15
5.最大页数如小于10页时,只显示所有的页数
如当前页码是3,最大页是7 则输出 1、2、
3、4、5、6、7
代码实现:
/**
* 获得分页
* @param currPage 当前页数
* @param totalPages 最大页数
* @return
*/
public List<String> getPages(int currPage,int totalPages) {
int stPos = 1;
int endPos = 10;
List<String> ret = new ArrayList();
if(totalPages<10){ // 总页数不满10页
endPos = totalPages;
}else if(currPage<6){ // 前不满5页
stPos = 1;
endPos = 10;
}else if(totalPages-currPage<4){ // 后不满4
stPos = totalPages-9;
endPos = totalPages;
}else{ // 普通情况
stPos = currPage-5;
endPos = currPage+4;
}
logger.info("总页数:"+totalPages+";当前页面:"+currPage+" 输出-->起始页:"+stPos+";结束页:"+endPos);
for(int i= stPos;i<=endPos;i++){
ret.add(i+"");
}
return ret;
}