IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> CountDownTimer实现adapter倒计时 -> 正文阅读

[游戏开发]CountDownTimer实现adapter倒计时

Adapter

class SelectMallAllOrderFragmentAdapter(layout: Int) :
BaseQuickAdapter<OrderDetailPageBean.RecordsDTO, SelectMallAllOrderFragmentAdapter.TimerViewHolder>(layout) {

private var timeList = arrayListOf<CountDownTimer>()
override fun convert(holder:TimerViewHolder, item: OrderDetailPageBean.RecordsDTO) {
   //避免复用释放资源
    holder?.countTimer?.cancel()
    var date = holder.getView<TextView>(R.id.date)
     var   Time:Long= 163947332699//定义时间
                    if (Time!= null){
                        //获取时间差
                        var imeDifference = System.currentTimeMillis() -Time  //当前时间-时间
                        var endTime = Time * 1000 - imeDifference
                        if (endTime != null && endTime > 0) {
                            date.setVisibility(View.VISIBLE)
                            holder?.countTimer = object : CountDownTimer(endTime, 1000) {
                                override fun onTick(millisUntilFinished: Long) {
                                    date.setVisibility(View.VISIBLE)
                                    var timeShow =
                                        setTimeShow((millisUntilFinished / 1000).toLong())
                                    date.setText(timeShow)
                                }

                                override fun onFinish() {//结束倒计时  隐藏view
                                    date.setVisibility(View.GONE)
                                    button2.visibility = View.GONE
                                    //释放资源
                                    timeList.remove(holder?.countTimer)
                                }
                            }.start()
                            timeList.add(holder?.countTimer!!)
                        } else {
                            date.setVisibility(View.GONE)
                            button2.visibility = View.GONE
                        }
                    } else {
                        date.setVisibility(View.GONE)
                        button2.visibility = View.GONE
                    」
            }
         
}
    } catch (e: Exception) {
        e.printStackTrace()
    }
   //点击条目跳转
    holder.itemView.setOnClickListener {
        var intent = Intent(context, SelectMallOrderDetailsActivity::class.java)
        intent.putExtra("orderDetailId", item.orderDetailId)
        context.startActivity(intent)
    }

}

private fun setTimeShow(useTime: Long): String {

    var day = (useTime / 86400)
    val daytag = (useTime % 86400).toInt()
    var hour = daytag / 3600
    var hourTag = daytag % 3600
    var min = hourTag / 60
    var second = hourTag % 60
    var mDay: String
    val mHour: String
    val mMin: String
    val mSecond: String //天,小时,分钟,秒
    mHour = if (hour < 10) {
        "0$hour"
    } else {
        "" + hour
    }
    mMin = if (min < 10) {
        "0$min"
    } else {
        "" + min
    }
    mSecond = if (second < 10) {
        "0$second"
    } else {
        "" + second
    }
    //   val strTime = "距结束:" + day.toInt() + "天" + mHour + "时" + mMin + "分" + mSecond + "秒"
    val strTime =mMin + "分" + mSecond + "秒"
        return strTime
}

class TimerViewHolder(item: View) : BaseViewHolder(item) {
var countTimer:CountDownTimer?=null
}

public fun clearTimeList() {
    timeList.forEach {
        it.cancel()
    }
    timeList.clear()
}

}

Fragment 或者activity(释放资源)

override fun onDestroyView() {
    super.onDestroyView()
    if (newSelectMallAdapter != null) {
        try {
            if (newSelectMallAdapter != null) {
                newSelectMallAdapter.clearTimeList()
            }
        }catch (e:Exception){
            e.printStackTrace()
        }

    }
}
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:59:49  更:2022-03-30 18:59:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:55:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码