gpt4 book ai didi

android - Handler.postdelayed()在滚动状态更改时无法在recyclerview内部工作

转载 作者:太空狗 更新时间:2023-10-29 13:44:49 25 4
gpt4 key购买 nike

我主要是尝试在 滚动状态更改 中的 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()
}
}
...

关于android - Handler.postdelayed()在滚动状态更改时无法在recyclerview内部工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56320404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com