Android ListView倒计时功能

ListView的倒计时

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

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

mAdapter = new TimeListAdapter(this, mTimes);
mTimeLv.setAdapter(mAdapter);
//开始Timer
mTimer = 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());
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值