分页程序中得到page link的算法。

话不多说。

	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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值