Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Handler.postdelay()在滚动状态更改时在回收器视图内不工作_Android_Kotlin_Android Recyclerview_Android Handler_Onscrolllistener - Fatal编程技术网

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 on
scroll 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条的可见性,如库屏幕截图所示