gpt4 book ai didi

android - RecyclerView滚动到页面底部不会触发.addOnScrollListener的canScrollVertically

转载 作者:行者123 更新时间:2023-12-02 20:54:59 25 4
gpt4 key购买 nike

我正在尝试在我的垂直回收器 View 中实现跳过功能。当用户单击按钮时,recyclerView 将一直滚动到底部并触发 API 调用。现在,为了检查用户是否位于屏幕底部,我在我的 recyclerview 上使用 .addOnScrollListener

mGridRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);

//SCROLL_STATE_IDE prevents repeated calls from happening
// when near bottom of screen and slightly scroll up a bit
if(!mGridRecycler.canScrollVertically(1) && newState==RecyclerView.SCROLL_STATE_IDLE){
Log.d(TAG, "onScrollStateChanged: CALLED WTF");
mActivity.getNextPageGridView();
}
}
});

为了实现跳到最后一项的功能,我在按钮上使用此方法:

mGridRecycler.scrollToPosition(mList.size() - 1);

它跳到最后一项,但不会触发 API 调用,因为未调用 if-statement。有人知道我怎样才能让它成功吗?

最佳答案

RecyclerView 不知道 LayoutManager 将如何处理滚动。
仅当布局后 first 和/或 last 子位置发生变化时,您才会收到对 onScrolled 的调用,您不会收到 onScrollStateChanged 回调。

你应该做什么?

或者,您可以使用 smoothScrollToPosition(..) 方法,OR 覆盖 onScrolled 方法,OR 制作一个单击跳过按钮后立即向您的 API 发出请求,这是适合您的场景的最佳解决方案。

关于android - RecyclerView滚动到页面底部不会触发.addOnScrollListener的canScrollVertically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60343441/

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