我创建了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方法。 –