朋友说在listview中添加倒计时的时候,重新滑动会造成倒计时混乱,那么今天就写一个如何在Listview中添加倒计时条目的demo吧。
写倒计时的方法有很多,比如说CountDownTimer 、Timer、HandlerPostMessageDelayed等等,今天推荐handler!
一般来讲写倒计时的时候都会提供一个结束时间,那么整体思路就是结束时间-现在时间>0的时候,就重新触动HandlerPostMessageDelayed这个方法。
private List<Goods> mList = new ArrayList<Goods>();
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 1:
boolean CountDown = false;
// 计算每条的时间
for (int i = 0; i < mList.size(); i++) {
Goods goods = mList.get(i);
Long millisecond = DateTimeUtil.convertDateToMsec(
DateTimeUtil.getCurrentTime(), goods.getEndTime());
// 判断是否还有条目能够倒计时
if (millisecond > 1000) {
CountDown = true;
goods.setRemainTime((millisecond - 1000) / 1000 + "");
} else {
goods.setRemainTime("0");
}
}
adapter.notifyDataSetChanged();
if (CountDown) {
// TODO
handler.sendEmptyMessageDelayed(1, 1000);
}
break;
}
}};
首次调用:
//模拟从网上获取的数据
for (int i = 0; i < 20; i++) {
mList.add(new Goods("2016-05-11 15:23:" + i));
}
adapter = new CountAdapter(MainActivity.this, mList);
lv_show.setAdapter(adapter);
//准备进入倒计时循环
handler.sendEmptyMessage(1);
看懂了上面的代码,基本上你也就能实现倒计时了,后面的adapter和goods我就不一一列举了,源码也一并献上!
DEMO:点击打开链接