android 列表倒計時

本文adapter使用的是BaseQuickAdapter,感謝這種好的三方庫
兩個問題,一個是倒計時複用問題,另外一個是倒計時滑動回來倒計時又從頭開始的問題。

第一個問題,new 一個新的ViewHolder需要繼承BaseViewHolder
第二個問題,開始時間我是計算好,賦值到數據裏面的

class MineTaskAdapter : BaseQuickAdapter<Info, MineTaskAdapter.TaskNewViewHolder>(R.layout.adapter_mine_task) {

    private var timeList = arrayListOf<CountDownTimer>()

    override fun convert(helper: TaskNewViewHolder?, item: Info?) {

    helper?.countDownTimer?.cancel()

        if (item?.status == 1 || item?.status == 3) {
            if (item?.currentTime != null) {
                if (item?.currentTime > 0) {
                    helper?.countDownTimer = object:CountDownTimer(item?.currentTime, 1000){
                        override fun onFinish() {
                            helper?.getView<TextView>(R.id.task_tv_limit_time)?.text = "結束"
                        }
                        override fun onTick(millisUntilFinished: Long) {
                            item?.currentTime = millisUntilFinished
                            helper?.getView<TextView>(R.id.task_tv_limit_time)?.text =
                                    TimeUtil.LongtoDuration(millisUntilFinished / 1000.toDouble(), ":", ":", "")
                        }

                    }.start()
                    timeList.add(helper?.countDownTimer!!)
                } else {
                    helper?.getView<TextView>(R.id.task_tv_limit_time)!!.text = ""
                }
            }
        }
    }

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

    fun setCurrentTime() {
        notifyDataSetChanged()
    }
  
   //countDownTime與viewholder綁定
    class TaskNewViewHolder(item: View) : BaseViewHolder(item) {
        var countDownTimer:CountDownTimer?=null
    }


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章