ListView中添加倒计时条目

时间:2023-01-31 19:32:41

朋友说在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:点击打开链接