Last active
January 4, 2016 12:49
-
-
Save K90j1/8624396 to your computer and use it in GitHub Desktop.
[snippet] pagination
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * ページネーション用の配列をつくる | |
| * | |
| * @see <a href="http://getbootstrap.com/components/#pagination">Bootstrap - Default pagination</a> | |
| * @param totalCount | |
| * @param numberCurrentPage | |
| * @return pageNumbers ArrayList<Integer> pageNumbers.get(0) == 1, pageNumbers.get(1) == 2, ... | |
| */ | |
| public static ArrayList<Integer> paginationArray(int totalCount, int numberCurrentPage) { | |
| int totalNumPage = (int) Math.floor(totalCount / (double) Integer.parseInt(SettingManager.getInstance().getPageMaxCount())); | |
| if (totalCount % (double) Integer.parseInt(SettingManager.getInstance().getPageMaxCount()) != 0) { | |
| totalNumPage += 1; | |
| } | |
| if (totalNumPage < numberCurrentPage) { | |
| numberCurrentPage = totalNumPage; | |
| } else if (numberCurrentPage == 0) { | |
| numberCurrentPage = 1; | |
| } | |
| // 表示するページネーションの数 | |
| int paginationLimit = 5; | |
| if (totalNumPage < 5) { | |
| paginationLimit = totalNumPage; | |
| } | |
| ArrayList<Integer> pageNumbers = new ArrayList<Integer>(); | |
| // 合計件数が0、1の場合はフロントで対応 | |
| if (numberCurrentPage == totalNumPage | |
| && totalNumPage != 1) { | |
| // ページ番号が最大件数と等しい | |
| for (int i = 0; i < paginationLimit; i++) { | |
| // (10),9,8,7,6 | |
| pageNumbers.add(numberCurrentPage - i); | |
| } | |
| //ソート | |
| Collections.sort(pageNumbers); | |
| // ページ番号が1か一番目に少ない場合 | |
| } else if (numberCurrentPage == 1) { | |
| for (int i = 0; i < paginationLimit; i++) { | |
| // (1),2,3,4,5 | |
| pageNumbers.add(numberCurrentPage + i); | |
| } | |
| // ページ番号が2か二番目に少ない場合 | |
| } else if (numberCurrentPage == 2) { | |
| pageNumbers.add(numberCurrentPage - 1); | |
| for (int i = 0; i < paginationLimit - 1; i++) { | |
| // 1,(2),3,4,5 | |
| pageNumbers.add(numberCurrentPage + i); | |
| } | |
| } else if ((numberCurrentPage == 4 && totalNumPage == 5) | |
| || numberCurrentPage == (totalNumPage - paginationLimit + 4)) { | |
| // ページ番号が4か4番目に少ない場合 | |
| pageNumbers.add(numberCurrentPage + 1); | |
| for (int i = 0; i < paginationLimit - 1; i++) { | |
| // 10,(9),8,7,6 | |
| pageNumbers.add(numberCurrentPage - i); | |
| } | |
| Collections.sort(pageNumbers); | |
| } else { | |
| // ページ番号が3か真ん中の場合 | |
| // 1,2,(3),4,5 | |
| pageNumbers.add(numberCurrentPage - 2); | |
| pageNumbers.add(numberCurrentPage - 1); | |
| pageNumbers.add(numberCurrentPage); | |
| pageNumbers.add(numberCurrentPage + 1); | |
| if ((numberCurrentPage + 2) <= totalNumPage) { | |
| pageNumbers.add(numberCurrentPage + 2); | |
| } | |
| } | |
| return pageNumbers; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment