CollectionAdapter.kt 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package com.zswc.creativity.adapter
  2. import android.graphics.Color
  3. import android.os.CountDownTimer
  4. import android.util.Log
  5. import android.view.View
  6. import com.chad.library.adapter.base.viewholder.BaseDataBindingHolder
  7. import com.ysnows.base.base.BAdapter
  8. import com.zswc.creativity.R
  9. import com.zswc.creativity.databinding.ItemCollectionBinding
  10. import com.zswc.creativity.databinding.ItemRecommedBinding
  11. import com.zswc.creativity.model.CollectionList
  12. import com.zswc.creativity.utils.TimeUtils
  13. import com.zswc.creativity.utils.glide.GlideUtils
  14. import com.zswc.creativity.vmodel.CollectionVModel
  15. import com.zswc.creativity.vmodel.RecommendVModel
  16. import java.text.DecimalFormat
  17. import java.text.SimpleDateFormat
  18. import java.util.*
  19. class CollectionAdapter(val vm: CollectionVModel) : BAdapter<CollectionList,
  20. BaseDataBindingHolder<ItemCollectionBinding>>(R.layout.item_collection) {
  21. //state 1:进行中2:即将开售3:已售罄)
  22. override fun convert(holder: BaseDataBindingHolder<ItemCollectionBinding>, item: CollectionList) {
  23. holder.dataBinding?.vm = vm
  24. holder.dataBinding?.item = item
  25. GlideUtils.lImg(context, item.cover, holder.dataBinding?.imgBg!!)
  26. if (item.soldOut == 0) {
  27. holder.dataBinding?.llOne?.visibility=View.GONE
  28. holder.dataBinding?.llTwo?.visibility=View.GONE
  29. holder.dataBinding?.llThree?.visibility=View.VISIBLE
  30. } else {
  31. when (item.state) {
  32. 1 -> {
  33. holder.dataBinding?.llOne?.visibility=View.VISIBLE
  34. holder.dataBinding?.llTwo?.visibility=View.GONE
  35. holder.dataBinding?.llThree?.visibility=View.GONE
  36. }
  37. 2 -> {
  38. holder.dataBinding?.llOne?.visibility=View.GONE
  39. holder.dataBinding?.llTwo?.visibility=View.VISIBLE
  40. holder.dataBinding?.llThree?.visibility=View.GONE
  41. //设置倒计时-毫秒
  42. holder.dataBinding?.tvState?.text=""
  43. var sumSecond = getTimeTo(TimeUtils.getTime(), item.sellTime)
  44. //创建一个时长30秒的倒计时器,倒计时间隔1秒,参数1为计时总时长,参数2为计时间隔
  45. val countDownTimer = object : CountDownTimer(sumSecond, 1000) {
  46. //方法会在1秒后回调,参数millisUntilFinished表示剩余时间的毫秒值
  47. override fun onTick(millisUntilFinished: Long) {
  48. val remainderTime = millisUntilFinished / 1000 - 1
  49. holder.dataBinding?.tvState?.text = "即将开售 " + formatTime(remainderTime.toInt())
  50. // Log.e("-shy-", "onTick: =" + remainderTime)
  51. if (remainderTime.toInt() == 0) {
  52. onFinish()
  53. cancel()
  54. item.state = 1//改变状态
  55. notifyItemChanged(holder.adapterPosition)
  56. }
  57. }
  58. //计时器结束时执行的方法
  59. override fun onFinish() {
  60. }
  61. }
  62. countDownTimer.start()
  63. //调用cancel方法取消计时器结束计时
  64. // countDownTimer.cancel()
  65. // holder.dataBinding?.tvState?.text = "即将开售 " + item.sellTime
  66. }
  67. 3 -> {
  68. holder.dataBinding?.llOne?.visibility=View.GONE
  69. holder.dataBinding?.llTwo?.visibility=View.GONE
  70. holder.dataBinding?.llThree?.visibility=View.VISIBLE
  71. }
  72. else -> {
  73. holder.dataBinding?.llOne?.visibility=View.GONE
  74. holder.dataBinding?.llTwo?.visibility=View.GONE
  75. holder.dataBinding?.llThree?.visibility=View.VISIBLE
  76. }
  77. }
  78. }
  79. }
  80. /**
  81. * 将秒转化为 HH:mm:io.agora.rtc.ss 的格式
  82. *
  83. * @param time 秒
  84. * @return
  85. */
  86. var decimalFormat: DecimalFormat? = null
  87. private fun formatTime(time: Int): String? {
  88. if (decimalFormat == null) {
  89. decimalFormat = DecimalFormat("00")
  90. }
  91. val hh: String = decimalFormat!!.format(time / 3600)
  92. val mm: String = decimalFormat!!.format(time % 3600 / 60)
  93. val ss: String = decimalFormat!!.format(time % 60)
  94. // return "$hh:$mm:$io.agora.rtc.ss"
  95. return "$hh:$mm:$ss"
  96. }
  97. //计算两个时间相差的秒数
  98. fun getTime(startTime: String?, endTime: String?): Long {
  99. val df = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
  100. val eTime: Long = df.parse(endTime).time
  101. val sTime: Long = df.parse(startTime).time
  102. return (eTime - sTime) / 1000
  103. }
  104. //计算两个时间相差的毫秒数
  105. fun getTimeTo(startTime: String?, endTime: String?): Long {
  106. val df = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
  107. val eTime: Long = df.parse(endTime).time
  108. val sTime: Long = df.parse(startTime).time
  109. return (eTime - sTime)
  110. }
  111. }