posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          java List 分頁(yè)應(yīng)用(一)

          Posted on 2010-01-09 14:35 Gavin.lee 閱讀(5111) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): java SE & EE
          應(yīng)用類(lèi):
          package com.Gavin.tools.util;

          /**  
           * List分頁(yè)
           * 實(shí)現(xiàn):利用List的獲取子List方法,實(shí)現(xiàn)對(duì)List的分頁(yè)
           * 
          @author 顯武
           * @date 2010-1-8 16:27:31
           * 
           
          */


          import java.util.ArrayList;
          import java.util.List;

          public class PageModel {
              
          private int page = 1// 當(dāng)前頁(yè)

              
          public int totalPages = 0// 總頁(yè)數(shù)

              
          private int pageRecorders;// 每頁(yè)5條數(shù)據(jù)

              
          private int totalRows = 0// 總數(shù)據(jù)數(shù)

              
          private int pageStartRow = 0;// 每頁(yè)的起始數(shù)

              
          private int pageEndRow = 0// 每頁(yè)顯示數(shù)據(jù)的終止數(shù)

              
          private boolean hasNextPage = false// 是否有下一頁(yè)

              
          private boolean hasPreviousPage = false// 是否有前一頁(yè)

              
          private List list;

              
          // private Iterator it;

              
          public PageModel(List list, int pageRecorders) {
                  init(list, pageRecorders);
          // 通過(guò)對(duì)象集,記錄總數(shù)劃分
              }

              
              
          /**
               * 初始化list,并告之該list每頁(yè)的記錄數(shù)
               * 
          @param list
               * 
          @param pageRecorders
               
          */

              
          public void init(List list, int pageRecorders) {
                  
          this.pageRecorders = pageRecorders;
                  
          this.list = list;
                  totalRows 
          = list.size();
                  
          // it = list.iterator();
                  hasPreviousPage = false;
                  
          if ((totalRows % pageRecorders) == 0{
                      totalPages 
          = totalRows / pageRecorders;
                  }
           else {
                      totalPages 
          = totalRows / pageRecorders + 1;
                  }


                  
          if (page >= totalPages) {
                      hasNextPage 
          = false;
                  }
           else {
                      hasNextPage 
          = true;
                  }


                  
          if (totalRows < pageRecorders) {
                      
          this.pageStartRow = 0;
                      
          this.pageEndRow = totalRows;
                  }
           else {
                      
          this.pageStartRow = 0;
                      
          this.pageEndRow = pageRecorders;
                  }

              }



              
          // 判斷要不要分頁(yè)
              public boolean isNext() {
                  
          return list.size() > 5;
              }


              
          public void setHasPreviousPage(boolean hasPreviousPage) {
                  
          this.hasPreviousPage = hasPreviousPage;
              }


              
          public String toString(int temp) {
                  String str 
          = Integer.toString(temp);
                  
          return str;
              }


              
          public void description() {

                  String description 
          = "共有數(shù)據(jù)數(shù):" + this.getTotalRows() +

                  
          "共有頁(yè)數(shù): " + this.getTotalPages() + 

                  
          "當(dāng)前頁(yè)數(shù)為:" + this.getPage() +

                  
          " 是否有前一頁(yè): " + this.isHasPreviousPage() +

                  
          " 是否有下一頁(yè):" + this.isHasNextPage() +

                  
          " 開(kāi)始行數(shù):" + this.getPageStartRow() +

                  
          " 終止行數(shù):" + this.getPageEndRow();

                  System.out.println(description);
              }


              
          public List getNextPage() {
                  page 
          = page + 1;

                  disposePage();

                  System.out.println(
          "用戶(hù)凋用的是第" + page + "頁(yè)");
                  
          this.description();
                  
          return getObjects(page);
              }


              
          /**
               * 處理分頁(yè)
               
          */

              
          private void disposePage() {

                  
          if (page == 0{
                      page 
          = 1;
                  }


                  
          if ((page - 1> 0{
                      hasPreviousPage 
          = true;
                  }
           else {
                      hasPreviousPage 
          = false;
                  }


                  
          if (page >= totalPages) {
                      hasNextPage 
          = false;
                  }
           else {
                      hasNextPage 
          = true;
                  }

              }


              
          public List getPreviousPage() {

                  page 
          = page - 1;

                  
          if ((page - 1> 0{
                      hasPreviousPage 
          = true;
                  }
           else {
                      hasPreviousPage 
          = false;
                  }

                  
          if (page >= totalPages) {
                      hasNextPage 
          = false;
                  }
           else {
                      hasNextPage 
          = true;
                  }

                  
          this.description();
                  
          return getObjects(page);
              }


              
          /**
               * 獲取第幾頁(yè)的內(nèi)容
               * 
               * 
          @param page
               * 
          @return
               
          */

              
          public List getObjects(int page) {
                  
          if (page == 0)
                      
          this.setPage(1);
                  
          else
                      
          this.setPage(page);
                  
          this.disposePage();
                  
          if (page * pageRecorders < totalRows) {// 判斷是否為最后一頁(yè)
                      pageEndRow = page * pageRecorders;
                      pageStartRow 
          = pageEndRow - pageRecorders;
                  }
           else {
                      pageEndRow 
          = totalRows;
                      pageStartRow 
          = pageRecorders * (totalPages - 1);
                  }


                  List objects 
          = null;
                  
          if (!list.isEmpty()) {
                      objects 
          = list.subList(pageStartRow, pageEndRow);
                  }

                  
          //this.description();
                  return objects;
              }


              
          public List getFistPage() {
                  
          if (this.isNext()) {
                      
          return list.subList(0, pageRecorders);
                  }
           else {
                      
          return list;
                  }

              }


              
          public boolean isHasNextPage() {
                  
          return hasNextPage;
              }



              
          public void setHasNextPage(boolean hasNextPage) {
                  
          this.hasNextPage = hasNextPage;
              }



              
          public List getList() {
                  
          return list;
              }



              
          public void setList(List list) {
                  
          this.list = list;
              }



              
          public int getPage() {
                  
          return page;
              }



              
          public void setPage(int page) {
                  
          this.page = page;
              }



              
          public int getPageEndRow() {
                  
          return pageEndRow;
              }



              
          public void setPageEndRow(int pageEndRow) {
                  
          this.pageEndRow = pageEndRow;
              }



              
          public int getPageRecorders() {
                  
          return pageRecorders;
              }



              
          public void setPageRecorders(int pageRecorders) {
                  
          this.pageRecorders = pageRecorders;
              }



              
          public int getPageStartRow() {
                  
          return pageStartRow;
              }



              
          public void setPageStartRow(int pageStartRow) {
                  
          this.pageStartRow = pageStartRow;
              }



              
          public int getTotalPages() {
                  
          return totalPages;
              }



              
          public void setTotalPages(int totalPages) {
                  
          this.totalPages = totalPages;
              }



              
          public int getTotalRows() {
                  
          return totalRows;
              }



              
          public void setTotalRows(int totalRows) {
                  
          this.totalRows = totalRows;
              }



              
          public boolean isHasPreviousPage() {
                  
          return hasPreviousPage;
              }


          }


          測(cè)試類(lèi):
          package com.Gavin.tools.util;

          import java.util.ArrayList;
          import java.util.List;

          public class TestPagerModel {
              
          public static void main(String args[]) {
                  List
          <String> list = new ArrayList<String>();
                  list.add(
          "a");
                  list.add(
          "b");
                  list.add(
          "c");
                  list.add(
          "d");
                  list.add(
          "e");
                  list.add(
          "f");
                  list.add(
          "g");
                  list.add(
          "h");
                  list.add(
          "h");
                  list.add(
          "i");
                  list.add(
          "j");
                  list.add(
          "k");
                  list.add(
          "l");
                  list.add(
          "m");
                  PageModel pm 
          = new PageModel(list, 5);
                  
                  List sublist 
          = pm.getObjects(3);
                  
          for(int i = 0; i < sublist.size(); i++{
                      System.out.println(sublist.get(i));
                  }

                  System.out.println(sublist.get(
          0));
              }


          }


          評(píng)論

          # re: java List 分頁(yè)應(yīng)用(一)  回復(fù)  更多評(píng)論   

          2014-10-17 16:27 by ss
          ss
          主站蜘蛛池模板: 黔江区| 梨树县| 武清区| 平顶山市| 深泽县| 黑山县| 莒南县| 襄城县| 新邵县| 澄迈县| 光泽县| 平湖市| 奉化市| 文成县| 丰原市| 明溪县| 汉沽区| 红河县| 小金县| 邹城市| 油尖旺区| 临沂市| 峨山| 阳信县| 江津市| 旬阳县| 青田县| 雷波县| 香格里拉县| 富源县| 精河县| 蚌埠市| 永城市| 凤山县| 德格县| 汉寿县| 信宜市| 兰考县| 瑞金市| 于都县| 昌黎县|