是否有任何庫可用於實現列表分頁?假設我有10行的空間,並且用戶可以選擇他是否要逐頁向前或向後滾動(因此+ - 10項)。這可能例如由-1, 0, +1
控制。如何在列表中實現分頁?
這可能是很多工作來建立一個類,防止向後/向前滾動如果沒有足夠的項目顯示,並自我保存狀態在用戶目前的頁面上。
那麼有什麼?
是否有任何庫可用於實現列表分頁?假設我有10行的空間,並且用戶可以選擇他是否要逐頁向前或向後滾動(因此+ - 10項)。這可能例如由-1, 0, +1
控制。如何在列表中實現分頁?
這可能是很多工作來建立一個類,防止向後/向前滾動如果沒有足夠的項目顯示,並自我保存狀態在用戶目前的頁面上。
那麼有什麼?
我已經解決了這個問題。我做了一個靜態的getPages方法,將通用集合分解成頁面列表(也是列表)。我已經提供了下面的代碼。
public static <T> List<List<T>> getPages(Collection<T> c, Integer pageSize) {
if (c == null)
return Collections.emptyList();
List<T> list = new ArrayList<T>(c);
if (pageSize == null || pageSize <= 0 || pageSize > list.size())
pageSize = list.size();
int numPages = (int) Math.ceil((double)list.size()/(double)pageSize);
List<List<T>> pages = new ArrayList<List<T>>(numPages);
for (int pageNum = 0; pageNum < numPages;)
pages.add(list.subList(pageNum * pageSize, Math.min(++pageNum * pageSize, list.size())));
return pages;
}
小的優化,如果你根本不想創建任何新的列表。
/*
* returns a view (not a new list) of the sourceList for the
* range based on page and pageSize
* @param sourceList
* @param page
* @param pageSize
* @return
*/
public static <T> List<T> getPage(List<T> sourceList, int page, int pageSize) {
if(pageSize <= 0 || page <= 0) {
throw new IllegalArgumentException("invalid page size: " + pageSize);
}
int fromIndex = (page - 1) * pageSize;
if(sourceList == null || sourceList.size() < fromIndex){
return Collections.emptyList();
}
// toIndex exclusive
return sourceList.subList(fromIndex, Math.min(fromIndex + pageSize, sourceList.size()));
}
對於Web應用程序:JSF提供分頁。 –
不是jsf,純java – membersound
我只是想問問它是什麼樣的應用程序。通過「純Java」你是指一個搖擺應用程序或控制檯應用程序? –