话不多说。
其中-1是用来打点的。效果图如下。
[img]http://dengyin2000.iteye.com/upload/picture/pic/29793/94e72e67-a1a9-35fa-85e3-dab3ea4a9400.bmp[/img]
[img]http://dengyin2000.iteye.com/upload/picture/pic/29795/e61a626e-7668-3ab8-9810-fc26713a7960.bmp[/img]
[img]http://dengyin2000.iteye.com/upload/picture/pic/29797/d9c8d7b6-0d2d-378c-b044-568d80d4b763.bmp[/img]
[img]http://dengyin2000.iteye.com/upload/picture/pic/29799/3c41d922-5192-3c39-b4cd-baaaacb05bc9.bmp[/img]
[img]http://dengyin2000.iteye.com/upload/picture/pic/29801/59f91f03-941b-3750-aefc-d48179a27bd4.bmp[/img]
public ArrayList<Integer> page(int total, int current) {
int adjacents = 3;
ArrayList<Integer> result = new ArrayList<Integer>();
if (total < (5 + (adjacents * 2))) // not enough links to make it worth breaking up
{
WriteNumberedLinks(1, total, result);
}
else
{
if ((total - (adjacents * 2) > current) && // in the middle
(current > (adjacents * 2)))
{
WriteNumberedLinks(1, 1, result);
WriteElipsis(result);
WriteNumberedLinks(current - adjacents - 1, current + adjacents, result);
WriteElipsis(result);
WriteNumberedLinks(total, total, result);
}
else if (current < (total / 2))
{
WriteNumberedLinks(1, 3 + (adjacents * 2), result);
WriteElipsis(result);
WriteNumberedLinks(total, total, result);
}
else // at the end
{
WriteNumberedLinks(1, 1, result);
WriteElipsis(result);
WriteNumberedLinks(total - (2 + (adjacents * 2)), total, result);
}
}
return result;
}
/**
* @param result
*
*/
private void WriteElipsis(ArrayList<Integer> result) {
result.add(-1);
}
/**
* @param i
* @param lastIndex
* @param result
*/
private void WriteNumberedLinks(int i, int lastIndex, ArrayList<Integer> result) {
for (int d=i; d <= lastIndex; d++) {
result.add(d);
}
}
其中-1是用来打点的。效果图如下。
[img]http://dengyin2000.iteye.com/upload/picture/pic/29793/94e72e67-a1a9-35fa-85e3-dab3ea4a9400.bmp[/img]
[img]http://dengyin2000.iteye.com/upload/picture/pic/29795/e61a626e-7668-3ab8-9810-fc26713a7960.bmp[/img]
[img]http://dengyin2000.iteye.com/upload/picture/pic/29797/d9c8d7b6-0d2d-378c-b044-568d80d4b763.bmp[/img]
[img]http://dengyin2000.iteye.com/upload/picture/pic/29799/3c41d922-5192-3c39-b4cd-baaaacb05bc9.bmp[/img]
[img]http://dengyin2000.iteye.com/upload/picture/pic/29801/59f91f03-941b-3750-aefc-d48179a27bd4.bmp[/img]