123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- package com.zswc.creativity.adapter
- import android.graphics.Color
- import android.os.CountDownTimer
- import android.util.Log
- import android.view.View
- import com.chad.library.adapter.base.viewholder.BaseDataBindingHolder
- import com.ysnows.base.base.BAdapter
- import com.zswc.creativity.R
- import com.zswc.creativity.databinding.ItemCollectionBinding
- import com.zswc.creativity.databinding.ItemRecommedBinding
- import com.zswc.creativity.model.CollectionList
- import com.zswc.creativity.utils.TimeUtils
- import com.zswc.creativity.utils.glide.GlideUtils
- import com.zswc.creativity.vmodel.CollectionVModel
- import com.zswc.creativity.vmodel.RecommendVModel
- import java.text.DecimalFormat
- import java.text.SimpleDateFormat
- import java.util.*
- class CollectionAdapter(val vm: CollectionVModel) : BAdapter<CollectionList,
- BaseDataBindingHolder<ItemCollectionBinding>>(R.layout.item_collection) {
- //state 1:进行中2:即将开售3:已售罄)
- override fun convert(holder: BaseDataBindingHolder<ItemCollectionBinding>, item: CollectionList) {
- holder.dataBinding?.vm = vm
- holder.dataBinding?.item = item
- GlideUtils.lImg(context, item.cover, holder.dataBinding?.imgBg!!)
- if (item.soldOut == 0) {
- holder.dataBinding?.llOne?.visibility=View.GONE
- holder.dataBinding?.llTwo?.visibility=View.GONE
- holder.dataBinding?.llThree?.visibility=View.VISIBLE
- } else {
- when (item.state) {
- 1 -> {
- holder.dataBinding?.llOne?.visibility=View.VISIBLE
- holder.dataBinding?.llTwo?.visibility=View.GONE
- holder.dataBinding?.llThree?.visibility=View.GONE
- }
- 2 -> {
- holder.dataBinding?.llOne?.visibility=View.GONE
- holder.dataBinding?.llTwo?.visibility=View.VISIBLE
- holder.dataBinding?.llThree?.visibility=View.GONE
- //设置倒计时-毫秒
- holder.dataBinding?.tvState?.text=""
- var sumSecond = getTimeTo(TimeUtils.getTime(), item.sellTime)
- //创建一个时长30秒的倒计时器,倒计时间隔1秒,参数1为计时总时长,参数2为计时间隔
- val countDownTimer = object : CountDownTimer(sumSecond, 1000) {
- //方法会在1秒后回调,参数millisUntilFinished表示剩余时间的毫秒值
- override fun onTick(millisUntilFinished: Long) {
- val remainderTime = millisUntilFinished / 1000 - 1
- holder.dataBinding?.tvState?.text = "即将开售 " + formatTime(remainderTime.toInt())
- // Log.e("-shy-", "onTick: =" + remainderTime)
- if (remainderTime.toInt() == 0) {
- onFinish()
- cancel()
- item.state = 1//改变状态
- notifyItemChanged(holder.adapterPosition)
- }
- }
- //计时器结束时执行的方法
- override fun onFinish() {
- }
- }
- countDownTimer.start()
- //调用cancel方法取消计时器结束计时
- // countDownTimer.cancel()
- // holder.dataBinding?.tvState?.text = "即将开售 " + item.sellTime
- }
- 3 -> {
- holder.dataBinding?.llOne?.visibility=View.GONE
- holder.dataBinding?.llTwo?.visibility=View.GONE
- holder.dataBinding?.llThree?.visibility=View.VISIBLE
- }
- else -> {
- holder.dataBinding?.llOne?.visibility=View.GONE
- holder.dataBinding?.llTwo?.visibility=View.GONE
- holder.dataBinding?.llThree?.visibility=View.VISIBLE
- }
- }
- }
- }
- /**
- * 将秒转化为 HH:mm:io.agora.rtc.ss 的格式
- *
- * @param time 秒
- * @return
- */
- var decimalFormat: DecimalFormat? = null
- private fun formatTime(time: Int): String? {
- if (decimalFormat == null) {
- decimalFormat = DecimalFormat("00")
- }
- val hh: String = decimalFormat!!.format(time / 3600)
- val mm: String = decimalFormat!!.format(time % 3600 / 60)
- val ss: String = decimalFormat!!.format(time % 60)
- // return "$hh:$mm:$io.agora.rtc.ss"
- return "$hh:$mm:$ss"
- }
- //计算两个时间相差的秒数
- fun getTime(startTime: String?, endTime: String?): Long {
- val df = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
- val eTime: Long = df.parse(endTime).time
- val sTime: Long = df.parse(startTime).time
- return (eTime - sTime) / 1000
- }
- //计算两个时间相差的毫秒数
- fun getTimeTo(startTime: String?, endTime: String?): Long {
- val df = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
- val eTime: Long = df.parse(endTime).time
- val sTime: Long = df.parse(startTime).time
- return (eTime - sTime)
- }
- }
|