是否有 RecyclerView 的 OnScrollListener 在滚动时连续调用,而不仅仅是在状态更改或滚动开始时调用?

Posted

技术标签:

【中文标题】是否有 RecyclerView 的 OnScrollListener 在滚动时连续调用,而不仅仅是在状态更改或滚动开始时调用?【英文标题】:Is there a OnScrollListener for RecyclerView which is called continuously while Scrolling and not only when the State is changed or scrolling begins? 【发布时间】:2020-06-25 08:27:46 【问题描述】:

我上面有一个 RecyclerView 和一个 Textview,我想根据 Recyclerview 中的第一个可见元素更新 Textview。但是 Recyclerview 只有两个 OnScroll-Listeners onScrolledonScrollStateChanged。两者仅在达到特定状态(转换)时才被调用。这就是为什么我的 TextView 只在我开始/结束滚动时更新,但我想更新我的 Textview,即使在滚动稳定之间。

在 Swift 中,这种行为是通过“scrollViewDidScroll()”实现的。

有没有办法在 android 中实现这一点?

【问题讨论】:

how-to-check-if-first-item-of-recyclerview-is-visible-on-the-screen 可能重复 @PraveenSP 不,我的问题不是找到第一个可见元素,而是在滚动正在进行时不断收到通知。 如果我没记错 onScrolled 只要有滚动事件就连续提供信息... 是的,你是对的。我之前一定犯了另一个错误,这使它不起作用。谢谢。 没问题...快乐编码.. 【参考方案1】:
        mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() 
        @Override
        public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) 
            super.onScrolled(recyclerView, dx, dy);
            if(dy > 0) Log.d("db","scrolling up");
            else if(dy < 0) Log.d("db","scrolling dowm");
        
    );

【讨论】:

以上是关于是否有 RecyclerView 的 OnScrollListener 在滚动时连续调用,而不仅仅是在状态更改或滚动开始时调用?的主要内容,如果未能解决你的问题,请参考以下文章

是否有可能当recyclerview加载项只加载一次而不重新加载滚动?

是否有 RecyclerView 的 OnScrollListener 在滚动时连续调用,而不仅仅是在状态更改或滚动开始时调用?

是否允许在 RecyclerView 上投放多个 AdMob 广告?另类广告网络?

如何检查 Recyclerview 是不是为空

ListView与RecyclerView对比浅析——缓存机制

RecyclerView的ItemAnimator