gpt4 book ai didi

android - 如何使用 StaggeredLayoutManager 实现无限滚动

转载 作者:IT老高 更新时间:2023-10-28 23:21:22 25 4
gpt4 key购买 nike

我已经尝试为 LinearLayoutManager 实现无限滚动并且它成功并尝试将 LinearLayoutManager 实现复制到 StaggeredGridLayoutManager 但它不起作用。

我只想得到第一个VisibleItem。

在线性布局管理器中:

int firstVisibleItem = linearLayoutManager.findFirstVisibleItemPosition(int);

但在 StaggeredGridLayoutManager 中是:

int firstVisibleItem = staggeredGridLayoutManager.findFirstVisibleItemPositions(int[])

如何使用 (int) 而不是 (int[]) 获取 firstVisibleItem?

对此有什么好的方法/实现吗?

提前致谢。

最佳答案

我搞定了:

您可以在 StaggeredGridLayoutManager 中使用两种方法之一:

  1. findFirstVisibleItemPositions(int[])
  2. findFirstCompletelyVisibleItemPositions(int[])

传递一个空的 int 数组,该数组将使用位置进行初始化,并使用对您有意义的数组。

private boolean loading = true;
private int pastVisibleItems, visibleItemCount, totalItemCount;

mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener({
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

visibleItemCount = mLayoutManager.getChildCount();
totalItemCount = mLayoutManager.getItemCount();
int[] firstVisibleItems = null;
firstVisibleItems = mLayoutManager.findFirstVisibleItemPositions(firstVisibleItems);
if(firstVisibleItems != null && firstVisibleItems.length > 0) {
pastVisibleItems = firstVisibleItems[0];
}

if (loading) {
if ((visibleItemCount + pastVisibleItems) >= totalItemCount) {
loading = false;
Log.d("tag", "LOAD NEXT ITEM");
}
}
}
});

关于android - 如何使用 StaggeredLayoutManager 实现无限滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29079478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com