實(shí)現(xiàn)分析
1仍侥、GridView的顯示由列數(shù)礁鲁、數(shù)據(jù)源和Item布局決定
2趣席、當(dāng)GridView所有Item布局不足以超出GridView的高度時(shí)汰规,GridView是不可滑動(dòng)的
3谬俄、那么可以根據(jù)Item的布局大小柏靶,設(shè)定一頁(yè)的數(shù)據(jù)量顯示,通過(guò)替換此數(shù)據(jù)源即可實(shí)現(xiàn)左右翻頁(yè)
核心代碼
// 每一頁(yè)Item個(gè)數(shù)(根據(jù)實(shí)際情況修改)
private int pageItemCount = 8;
// 當(dāng)前頁(yè)碼
private int currentPage = 1;
// 總頁(yè)碼
private int totalPage = 1;
// 總數(shù)據(jù)源
private List<Kge> kgeList = new ArrayList<>();
// 當(dāng)前頁(yè)顯示的數(shù)據(jù)源
private List<Kge> currentList = new ArrayList<>();
// -------- 獲取數(shù)據(jù)源 --------
kgeList.add...
// 設(shè)置當(dāng)前頁(yè)數(shù)據(jù)源
if (kgeList.size() > pageItemCount) {
currentList = kgeList.subList(0, pageItemCount);
} else {
currentList = kgeList;
}
mAdapter.resetData(currentList);
// -------- 計(jì)算總頁(yè)碼 --------
if (kgeList.size() % pageItemCount == 0) {
totalPage = kgeList.size() / pageItemCount;
} else {
totalPage = kgeList.size() / pageItemCount + 1;
}
// -------- 上下頁(yè)切換 --------
//上一頁(yè)
if (currentPage > 1) {
currentList = kgeList.subList((currentPage - 2) * pageItemCount, (currentPage - 1) * pageItemCount);
mAdapter.resetData(currentList);
currentPage--;
}
// 下一頁(yè)
if (currentPage < totalPage) {
int nextPageSize = pageItemCount;
if (kgeList.size() < (currentPage + 1) * pageItemCount) {
nextPageSize = kgeList.size() - currentPage * pageItemCount;
}
currentList = kgeList.subList(currentPage * pageItemCount, currentPage * pageItemCount + nextPageSize);
mAdapter.resetData(currentList);
currentPage++;
}