Android Handler.postdelay()在滚动状态更改时在回收器视图内不工作
我基本上是在Android Handler.postdelay()在滚动状态更改时在回收器视图内不工作,android,kotlin,android-recyclerview,android-handler,onscrolllistener,Android,Kotlin,Android Recyclerview,Android Handler,Onscrolllistener,我基本上是在RecyclerViewinside onscroll state change中尝试执行一个方法,这里我使用处理程序线程在延迟后执行一个方法,但该方法根本没有执行,但是如果我将该方法放在处理程序线程之外,它就会成功执行,因此我的问题是为什么我无法在RecyclerViewonscroll中运行处理程序线程这是我的代码,请查看 rvsongs!!.addOnScrollListener(object: RecyclerView.OnScrollListener(){
RecyclerView
inside onscroll state change
中尝试执行一个方法,这里我使用处理程序
线程在延迟后执行一个方法,但该方法根本没有执行,但是如果我将该方法放在处理程序线程之外,它就会成功执行,因此我的问题是为什么我无法在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
后,您正在调用setIndexBarVisibility
。换句话说,recyclerView
在setIndexBatVisibility
之前呈现
要解决此问题,只需在setIndexBarVisibility
...
var updater:Runnable?=null
updater = object:Runnable {
override fun run() {
rvsongs!!.setIndexBarVisibility(false)
rvsongs.invalidate()
}
}
...
有人帮帮忙,我真的很笨,我只是做了一个测试,在onScroll事件中执行一个处理程序,它显示了一个祝酒词。它对我有用。setIndexBarVisibility是一个自定义函数吗?是的,实际上我正在使用此库中的自定义回收器视图。您应该在此处查看。setIndexBarVisibility用于设置a-z条的可见性,如库屏幕截图所示