今天学了分页,其他地方我能理解,唯独显示页数让我非常头痛,不知道是怎么显示页数的.
比如你有1000页的数据,但是你不能在下方显示1000页吧,那样多么的不人性化,甚至比没显示还惨.
所以作为初学者的我跑到了百度然后随便搜一个东西,开始研究起百度的页数显示规则.
刚开始我怎么都想不明白,按照10页显示为什么要到第7才开始变化,为什么不是第6页开始变化,为什么不是第5页开始变化.
不巧的是被我琢磨出来了.
下面开始个人答疑:(大神请绕道,虽然这是小问题.)
总页数 : 设总页数为15页
每次显示:5页
开始页面 : 第:n 页
结束页面 : 第:n 页
比如说:你想每次显示5页 .
a b c d e
那么首先你就得根据你的想法设置你当前页的前面有几页后面有几页.
所以可以有:
假设当前页是a:那么a的前面就是0页,a的后面就是4页
假设当前页是b:那么b的前面就是1页,b的后面就是3页
假设当前页是c:那么c的前面就是2页,c的后面就是2页
假设当前页是d:那么d的前面就是3页,d的后面就是1页
假设当前页是e:那么e的前面就是4页,e的后面就是0页
然后你就要开始判断 :我们按照当前页是c来计算吧.
首先判断你的总页数是否大于5页,如果不大于起始页就1,结束页就是5.
如果大于:
起始页就是 当前页 -2
结束页就是 当前页 +2
当然之后还得判断当前页如果-2之后是否小于1 当前页+2之后会不会大于总页数 这里我就不深研究了.
最后循环:
tip:先定义一个数组存起来
int pages[] = new int[5];
tip:再定义一个索引
int index = 0;
for(int i = 起始页;i <= 结束页;i++){
pages[index++] = i;
}
最后返回一个数组.
结果:
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 6 7 8 9
6 7 8 9 10
7 8 9 10 11
8 9 10 11 12
9 10 11 12 13
10 11 12 13 14
11 12 13 14 15
....等等 当然可以往回走.
注意:为了防止数组越界 ,千万要做好判断是否越界的准备.