一个分页类

43 篇文章 0 订阅
28 篇文章 0 订阅

一个分页类

PagesManager
public class PagesManager
{
    private readonly int RECORED_COUNT_PER_PAGE;
    private ArrayList _srcList;
    private int _totalPages;
   
    public PagesManager(ArrayList SrcList)
    {
        RECORED_COUNT_PER_PAGE = 25;
        _srcList = SrcList;
        if(IsOddPageCount())
            _totalPages = _srcList.Count / RECORED_COUNT_PER_PAGE + 1;
        else
            _totalPages = _srcList.Count / RECORED_COUNT_PER_PAGE;
    }
   
    private bool IsOddPageCount()
    {
        return 0 != _srcList.Count % RECORED_COUNT_PER_PAGE;
    }
   
    public ArrayList GetNextPage(int idx)
    {
        return GetCurrentPage(idx);
    }
   
    public ArrayList GetPreviousPage(int idx,out int fixedIdx)
    {
        if(idx >= _totalPages - 1)
            fixedIdx = _totalPages - 2;
        else
            fixedIdx = idx;
        return GetCurrentPage(fixedIdx);
    }
   
    private ArrayList GetCurrentPage(int pageIdx)
    {
        if(IsNoNeedToSubPages())
            return GetFirstPage();
        else if(BeyondTotalPages(pageIdx))
            return GetLastPage();
        else
            return SubPageConverter.GetSubPages(_srcList,
            RECORED_COUNT_PER_PAGE * pageIdx,
            RECORED_COUNT_PER_PAGE * (pageIdx + 1) - 1);
    }
   
    private bool BeyondTotalPages(int pageIdx)
    {
        return pageIdx >= _totalPages;
    }
   
    private ArrayList GetLastPage()
    {
        return SubPageConverter.GetSubPages(_srcList,
        RECORED_COUNT_PER_PAGE *(_totalPages - 1),
        _srcList.Count - 1);
    }

    private ArrayList GetFirstPage()
    {
        return _srcList;
    }
   
    private bool IsNoNeedToSubPages()
    {
        return RECORED_COUNT_PER_PAGE >= _srcList.Count;
    }
   
    private class SubPageConverter
    {
        public static ArrayList GetSubPages(ArrayList srcList, int from, int to)
        {
            ArrayList targetList = new ArrayList();
            if(from > srcList.Count-1 || to > srcList.Count -1 )
            {
                throw new Exception("beyond range");
            }
            if(from > to )
            {
                throw new Exception("logic error");
            }
           
            for(int i = from ;i< to + 1 ;i++)
                targetList.Add(srcList[i]);
           
            return targetList;
        }
    }
}
用法:
PageManager _pm = new PageManager(ArrayList);
_pm.GetPreviousPage(pageIdx,out pageIdx);
_pm.GetNextPage(pageIdx); 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值