Handler.postdelay() 在滚动状态更改时无法在回收器视图中工作

Handler.postdelay() not working inside recycler view on scroll state change

我基本上是在 scroll state change 上尝试在我的 RecyclerView 中执行一个方法,这里我使用 Handler 线程在延迟一段时间后执行一个方法,但是方法根本没有执行但是但是如果我将该方法放在处理程序线程之外它会成功执行所以我的问题是为什么我无法 运行 Handler 线程内部 RecyclerView onscroll 这是我的代码,请看一下。

rvsongs!!.addOnScrollListener(object: RecyclerView.OnScrollListener(){
                override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
                super.onScrollStateChanged(recyclerView, newState)
                if(newState== SCROLL_STATE_IDLE) {
                    val timerHandler = Handler()
                    var updater:Runnable?=null
                    updater = object:Runnable {
                        override fun run() {
                            rvsongs!!.setIndexBarVisibility(false)//this method is not getting executed however when put outside handler thread it's executed without any problem
                        }
                    }
                    timerHandler.postDelayed(updater,100)
                }
                else
                {
                    rvsongs!!.setIndexBarVisibility(true)
                }
            }
        })

问题是您在处理完整的 onScrollStateChanged 之后调用 setIndexBarVisibilty。换句话说,recyclerViewsetIndexBatVisibility 之前呈现。

要解决这个问题,只需在 setIndexBarVisibility

之后调用 invalidate
       ...
       var updater:Runnable?=null
        updater = object:Runnable {
            override fun run() {
                rvsongs!!.setIndexBarVisibility(false)
                rvsongs.invalidate()
            }
        }
        ...