首页 > 系统 > Android > 正文

Android ListView倒计时功能

2019-11-07 23:10:12
字体:
来源:转载
供稿:网友

ListView的倒计时

最近项目中要实现在ListView上一个倒计时的功能,根据服务器返回的数据,显示出倒计时。于是乎就写了一个Demo,功能很简单,先看看效果图!

效果图 实现起来其实并不麻烦,但是要清楚Timer只有一个,不是每个ListItem都有一个Timer,它是公用的,而Timer每隔1s就会让适配器刷新一次。 具体实现代码如下:

mAdapter = new TimeListAdapter(this, mTimes);mTimeLv.setAdapter(mAdapter);//开始TimermTimer = new Timer();mTimer.schedule(new TimerTask() { @Override public void run() { mHandler.sendEmptyMessage(0); }}, 1000, 1000);

这里设置Timer每隔1s发送一个消息,然后在Handler里面对适配器进行刷新,如下:

PRivate Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { //刷新适配器 mAdapter.notifyDataSetChanged(); }};

而在Adapter中,只是用时间减去当前时间,然后计算出剩余时间,

long time = mData.get(position);long surplusTime = time - System.currentTimeMillis();if (surplusTime <= 0) { holder.mTimeTv.setText("00:00:00");} else { setTextDesc(holder.mTimeTv, surplusTime / 1000);}private void setTextDesc(TextView mTextView, long surplusTime) { mTimeSb.delete(0, mTimeSb.length()); long hour = surplusTime / 3600; long minute = (surplusTime - hour * 3600) / 60; long second = surplusTime - hour * 3600 - minute * 60; if (hour < 10) { mTimeSb.append("0"); } mTimeSb.append(hour); mTimeSb.append(":"); if (minute < 10) { mTimeSb.append("0"); } mTimeSb.append(minute); mTimeSb.append(":"); if (second < 10) { mTimeSb.append("0"); } mTimeSb.append(second); mTextView.setText(mTimeSb.toString());}

当然实际开发中,时间肯定是后台返回的,但是倒计时的实现原理是一样的。<- - - ->小白的成长日记!


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表