本文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
}
}