我創建了Recycler視圖網格。我想要實現分頁。但我不明白它是如何做到的。我找到了一個答案enter link description here如何創建Recycler View Grid分頁?
但它不適合我。我的LayOutManager中沒有方法mLayoutManager.findFirstVisibleItemPosition();
。方法mRecyclerView.setOnScrollListener
已棄用。如何在Recycler視圖網格中實現分頁?
我創建了Recycler視圖網格。我想要實現分頁。但我不明白它是如何做到的。我找到了一個答案enter link description here如何創建Recycler View Grid分頁?
但它不適合我。我的LayOutManager中沒有方法mLayoutManager.findFirstVisibleItemPosition();
。方法mRecyclerView.setOnScrollListener
已棄用。如何在Recycler視圖網格中實現分頁?
我知道答案很晚。對於其他可能遇到此問題的人,請使用此解決方案
mRecyclerView.addOnScrollListener(mRecyclerViewOnScrollListener);
private RecyclerView.OnScrollListener
mRecyclerViewOnScrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView,
int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int visibleItemCount = layoutManager.getChildCount();
int totalItemCount = layoutManager.getItemCount();
int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();
if (!isLoading && currentPage < totalPages) {
if ((visibleItemCount + firstVisibleItemPosition) >= totalItemCount
&& firstVisibleItemPosition >= 0
&& totalItemCount >= numberOfItemsInAPage) {
loadMoreItems();
}
}
}
};
以下是與StaggeredGridLayoutManager
分頁的正確方法。
唯一的區別在於findFirstVisibleItemPositions()
,它爲每個範圍中的第一個可見位置返回int[]
。
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int visibleItemCount = mGridLayoutManager.getChildCount();
int totalItemCount = mGridLayoutManager.getItemCount();
int[] firstVisibleItemPositions = mGridLayoutManager.findFirstVisibleItemPositions(null);
if (!mIsLoading && !mIsLastPage) {
if ((firstVisibleItemPositions[0] + visibleItemCount) >= totalItemCount
&& firstVisibleItemPositions[0] >= 0
&& totalItemCount >= Config.PAGE_SIZE) {
loadMorePosts();
}
}
}
});
findFirstVisibleItemPosition返回一個不是int的整數[]也是'findFirstVisibleItemPosition'而不是'findFirstVisibleItemPositions' – Subho
一方面,findFirstVisibleItemPosition是LinearLayoutManager實現的一種方法,您只需要使用addOnScrollListener。 –
謝謝你的addOnScrollListener。那麼GridLayoutManager呢?我該怎麼做? – ip696
GridLayoutManager是LinearLayoutManager的子類。 GLM有findFirstVisibleItemPosition方法。 –