如何使用处理程序线程动态更新回收器视图中的文本视图
How to dynamically update textview inside recycler view with handler thread
我正在尝试使用来自 RecyclerView
的 Handler
线程更新我的 TextView
,这里线程已成功执行,但我的 TextView
没有每秒更新一次.
这是我的代码:
val timerHandler = Handler()
var sec: Int = 0
var min: Int = 0
var hour: Int = 0
updater = Runnable {
sec.inc()
if (sec > 60) {
sec = 0
min.inc()
}
if (min > 60) {
min = 0
hour.inc()
}
if(min >= 10 && hour >= 10 && sec >= 10) {
holder.txthrs.setText(hour.toString() + ":" + min.toString() + ":" + sec.toString())
} else {
holder.txthrs.setText("0" + hour.toString() + ":" + "0" + min.toString() + ":" + "0" + sec.toString())
}
settime(hour.toString() + ":" + min.toString() + ":" + sec.toString(), position.inc())
timerHandler.postDelayed(updater, 1000)
}
timerHandler.post(updater)
如有任何建议,我们将不胜感激!
您没有在 UI 线程上更新文本视图。在 Runnable {}
中添加:
override fun run() {
holder.txthrs.setText(hour.toString() + ":" + min.toString() + ":" + sec.toString())
}
你根本不会 运行 RecyclerView.Holder
上的计时器。
假设您有一个适配器,其固定位置保存定时器值。然后您只需要在适配器中更新该值并将更改通知侦听器。
fun setTime(time: String) {
this.time = time
notifyItemChanged(timeItemIndex, time)
}
adapter.setTime(timeString)
此外,您还必须设法停止计时器。
我正在尝试使用来自 RecyclerView
的 Handler
线程更新我的 TextView
,这里线程已成功执行,但我的 TextView
没有每秒更新一次.
这是我的代码:
val timerHandler = Handler()
var sec: Int = 0
var min: Int = 0
var hour: Int = 0
updater = Runnable {
sec.inc()
if (sec > 60) {
sec = 0
min.inc()
}
if (min > 60) {
min = 0
hour.inc()
}
if(min >= 10 && hour >= 10 && sec >= 10) {
holder.txthrs.setText(hour.toString() + ":" + min.toString() + ":" + sec.toString())
} else {
holder.txthrs.setText("0" + hour.toString() + ":" + "0" + min.toString() + ":" + "0" + sec.toString())
}
settime(hour.toString() + ":" + min.toString() + ":" + sec.toString(), position.inc())
timerHandler.postDelayed(updater, 1000)
}
timerHandler.post(updater)
如有任何建议,我们将不胜感激!
您没有在 UI 线程上更新文本视图。在 Runnable {}
中添加:
override fun run() {
holder.txthrs.setText(hour.toString() + ":" + min.toString() + ":" + sec.toString())
}
你根本不会 运行 RecyclerView.Holder
上的计时器。
假设您有一个适配器,其固定位置保存定时器值。然后您只需要在适配器中更新该值并将更改通知侦听器。
fun setTime(time: String) {
this.time = time
notifyItemChanged(timeItemIndex, time)
}
adapter.setTime(timeString)
此外,您还必须设法停止计时器。