怎么在Android中实现列表倒计时

  介绍

怎么在Android中实现列表倒计时?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

CountDownTimer类用法

,, private  CountDownTimer  timer =, new  CountDownTimer (30000,, 1000), {,   ,,,//根据间隔时间来不断回调此方法,这里是每隔1000毫秒调用一次   ,,,@Override    ,,,public  void  onTick (long  millisUntilFinished), {,   ,,,,,//todo  millisUntilFinished为剩余时间,也就是30000,安康;n * 1000   ,,,},   ,,,,   ,,,//结束倒计时调用,,   ,,,@Override    ,,,public  void  onFinish (), {,   ,,,,//todo   ,,,},   },,//开始倒计时   timer.start ();//取消倒计时(译者:取消后,再次启动会重新开始倒计时)   timer.cancel ();。

<强>代码实现

先看核心,也就是CountDownAdapter类,这里就简化UI,每个项目只有一个textView来显示倒计时,布局XML就不放了,直接放代码

class  CountDownAdapter (private  var 活动:,ListActivity,, private  var 数据:,ArrayList,, private  var  systemDate:,日期),:,BaseAdapter (), {      private 才能val  timeMap =, HashMap ()   private 才能val  handler =,处理程序()   private 才能val  runnable =, object :, runnable  {   ,,,override  fun 运行(),{   ,,,,,if  (systemDate  !=, null), {   ,,,,,,,systemDate.time =systemDate.time  +, 1000   ,,,,,,,Log.i (“xujf",,“服务器时间线程===,,+,systemDate  +,“====? +,)   ,,,,,,,handler.postDelayed (,, 1000)   ,,,,,}   ,,,}   ,,}      init {才能   ,,,handler.postDelayed (runnable, 1000)   ,,}      override 才能;fun  getView(位置:Int, convertView:, ?,,父母:,ViewGroup ?):, View  {   ,,,var  v:视图   ,,,var 标签:ViewHolder   ,,,var  vo =,数据(位置)   ,,,if  (null ==, convertView), {   ,,,,,v =, activity.layoutInflater.inflate (R.layout.item_count_down,,空)   ,,,,,tag =, ViewHolder (v)      ,,,,,v.tag =,标签   ,,,},{else    ,,,,,v =convertView   ,,,,,tag =, v.tag  as  ViewHolder   ,,,}      ,,,//获取控件对应的倒计时控件是否存在,,存在就取消,,解决时间重叠问题   ,,,var  tc:, MyCountDownTimer ?,=, timeMap [tag.tvTime]   ,,,if  (tc  !=, null), {   ,,,,,tc.cancel ()   ,,,,,tc =零   ,,,}      ,,,//计算时间差   ,,,val  time =, getDistanceTimeLong (systemDate, vo)   ,,,//创建倒计时,与控件绑定   ,,,val  cdu =, MyCountDownTimer(位置,,,,1000,,tag.tvTime)   ,,,cdu.start ()      ,,,//[醒目]此处需要映射集合将控件和倒计时类关联起来   ,,,timeMap.put (tag.tvTime, cdu)      ,,,return  v   ,,}      ,/* *   ,,*,退出时清空所有项目的计时器   ,,*/fun 才能;cancelAllTimers (), {   ,,,var 销售:,Set祝辞?,=timeMap.entries   ,,,var 它:,Iterator<*祝辞?,=,年代! ! .iterator ()   ,,,while  (! ! .hasNext ()), {   ,,,,,try  {   ,,,,,,,val  pairs =, it.next (), as  MutableMap.MutableEntry<*, *比;   ,,,,,,,var  cdt:, MyCountDownTimer ?,=, pairs.value  as  MyCountDownTimer   ,,,,,,,cdt ! ! .cancel ()   ,,,,,,,cdt =零   ,,,,,},catch  (e:例外),{   ,,,,,}      ,,,}   ,,,it =零   ,,,s =零   ,,,timeMap.clear ()   ,,}      null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在Android中实现列表倒计时