Skip to content

Instantly share code, notes, and snippets.

@K90j1
Last active January 4, 2016 12:49
Show Gist options
  • Select an option

  • Save K90j1/8624396 to your computer and use it in GitHub Desktop.

Select an option

Save K90j1/8624396 to your computer and use it in GitHub Desktop.
[snippet] pagination
/**
* ページネーション用の配列をつくる
*
* @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