相关文章推荐
酷酷的柑橘  ·  Android ...·  2 周前    · 
刚失恋的黄瓜  ·  android ...·  2 周前    · 
难过的盒饭  ·  recyclerview 横滑 item ...·  1 周前    · 
有情有义的葡萄酒  ·  Structured ...·  1 年前    · 
礼貌的皮带  ·  设备唯一标识 - 知乎·  1 年前    · 

如何停止RecyclerView中所有项的计时器,即使其中一些项是隐藏的?KOTLIN -火山引擎

面向开发者的云福利中心,ECS9.9元起,域名1元起,助力开发者快速在云上构建应用

域名注册服务

com/cn热门域名1元起,实名认证即享
1 . 00 / 首年起 66.00/首年起
新客专享 限购1个

云服务器共享型1核2G

超强性价比,适合个人、测试等场景使用
9 . 90 / 101.00/月
新客专享 限购1台

CDN国内流量包100G

同时抵扣两种流量消耗,加速分发更实惠
2 . 00 / 20.00/年
新客专享 限购1个

DigiCert证书免费领取

1年内申请20本免费证书,适用网站测试
0 . 00 / 首年 0.00/首年
新老同享 限领20本

如何停止RecyclerView中所有项的计时器,即使其中一些项是隐藏的?KOTLIN -相关文档

在RecyclerView Adapter中,可以在绑定ViewHolder时停止计时器并在解绑ViewHolder时重新启动计时器。还可以使用Handler和Runnable来实现这一目标。

示例代码:

在ViewHolder类中声明计时器变量:

private var timer: CountDownTimer? = null

在onBindViewHolder方法中启动计时器:

override fun onBindViewHolder(holder: ViewHolder, position: Int) { // 设置数据 holder.title.text = itemList[position].title holder.description.text = itemList[position].description

// 启动计时器
val item = itemList[position]
holder.timer = object : CountDownTimer(item.duration, 1000) {
    override fun onTick(millisUntilFinished: Long) {
        // 更新时间
        holder.time.text = formatTime(millisUntilFinished)
    override fun onFinish() {
        // 发出提示
        holder.time.text = "Time up!"
}.start()

在onViewRecycled方法中停止计时器:

override fun onViewRecycled(holder: ViewHolder) { // 停止计时器 holder.timer?.cancel() holder.timer = null

使用Handler和Runnable实现:

在ViewHolder类中声明Handler变量:

private val handler = Handler()

在onBindViewHolder方法中启动Runable:

override fun onBindViewHolder(holder: ViewHolder, position: Int) { // 设置数据 holder.title.text = itemList[position].title holder.description.text = itemList[position].description

// 启动计时器线程
val item = itemList[position]
holder.handler.post(object : Runnable {
    var remainingTime = item.duration
    override fun run() {
        // 更新时间
        holder.time.text = formatTime(remainingTime)
        remainingTime -= 1000
        if (remainingTime >= 0 && holder.adapterPosition == position) {
            holder.handler.postDelayed(this, 1000)
        } else {
            // 发出提示
            holder.time.text = "Time up!"

在onViewRecycled方法中移除Runable:

override fun onViewRecycled

免责声明
本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系 service@volcengine.com 进行反馈,火山引擎收到您的反馈后将及时答复和处理。

如何停止RecyclerView中所有项的计时器,即使其中一些项是隐藏的?KOTLIN -优选内容

如何停止RecyclerView中所有项的计时器,即使其中一些项是隐藏的?KOTLIN -相关内容

火山引擎最新活动

火种计划
爆款增长产品免费试用
了解详情
火山引擎·增长动力
助力企业快速增长
了解详情
数据智能VeDI
易用的高性能大数据产品家族
了解详情
新用户特惠专场
云服务器9.9元限量秒杀
查看活动