Android Kotlin - 移除/重置 RecyclerView OnScrollListener

4

我将RecyclerView和ScrollListener加载到一个函数中。

以下是在该函数中设置ScrollListener的代码(我删除了问题之外的所有内容):

    recyclerViewMemes.addOnScrollListener(object : RecyclerView.OnScrollListener() {
        override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
            super.onScrolled(recyclerView, dx, dy)

            val firstPosition = layoutManager.findFirstVisibleItemPosition()
            val lastPosition = layoutManager.findLastVisibleItemPosition()
            
            for (i in firstPosition..lastPosition) {
                if(adapterMemes.memes[i].pic.contains("_vid_")){ // ERROR HERE
                    Log.d(tagg, "bla")
                }
            }
        }
    })

当我尝试再次调用该函数来重置RecyclerView时,我会在我用“ERROR HERE”标注的行上收到ArrayIndexOutOfBoundsException。这意味着在重置所有内容时仍然会触发RecyclerView。
那么我该如何防止这种情况发生?比如删除/重置ScrollListener?

"重置RecyclerView"是什么意思?重新调用哪个函数? - Code-Apprentice
也许就是那个包含所有东西的那个?我还提到了哪些其他函数? - user12880465
好的,你回答了我的第二个问题,但没有回答我的第一个问题。 - Code-Apprentice
提供另一组数据。重置所有内容,包括ScrollListener。 - user12880465
我很欣赏你试图让你的代码尽可能地简洁。然而,你忽略了一些重要的细节,这使得我们无法提供帮助。请提供一个 [mcve] 来说明问题。 - Code-Apprentice
我还建议您使用Android Studio中的调试器逐步执行代码,以弄清楚它正在做什么以及为什么会出现异常。 - Code-Apprentice
1个回答

2
我找到了解决方案:
recyclerViewMemes.clearOnScrollListeners()

重置之前

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接