天天看點

CountDownTimer在擴充卡中的使用

我們在使用擴充卡的時候 一般情況下都是放入各種控件 今天在使用中用到CountDownTimer突然一臉的懵逼 居然不知道怎麼去設定(沃德天那麼傻) 其實擴充卡的item内部是可以放進去任何東西的 結果被老大一說 特尴尬

class ViewHolder {
            TextView textView;
          //CountDownTimerUtil 控件以外的東西也可以拿到擴充卡item裡面進行複用 不一定是控件哦
            CountDownTimerUtil timer;
        }
           

由于CountDownTimer在實時倒計時 我們的資料一般是要和伺服器資料盡可能保持一緻 上拉或者下拉擴充卡清單時不可能随時擷取資料 是以我們儲存下資料的擷取時間

public class CountDownTimeInfo {
    public long time;
    // system 記錄資料擷取時間
    public long system=System.currentTimeMillis();
}
           

接下來看下我們的擴充卡 由于擷取資料顯示資料時間差 是以擴充卡設定的時候應減去對應的時間差

@Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            if (convertView == null) {
                holder = new ViewHolder();
                convertView=View.inflate(MainActivity.this, R.layout.item_main, null);
                holder.textView = (TextView) convertView.findViewById(R.id.textview);
                holder.timer=new CountDownTimerUtil(holder.textView, , );
                convertView.setTag(holder);
            } else {
                holder =  (ViewHolder) convertView.getTag();
            }
            CountDownTimeInfo info = mList.get(position);
            //實際時間差 maxTime
            long maxTime=info.time- (System.currentTimeMillis() - info.system)/;
            if(maxTime<=){
                holder.textView.setText("倒計時結束!!!");
            }else{
                holder.timer.resetCountDownTimer(holder.te          }

            return convertView;
        }
           

大家在設定CountDownTimer的時候可能會有疑惑 由于CountDownTimer沒有給我們提供重新設定時間方法是以我們在重新設定時間的時候要把原先的CountDownTimer取消掉 重新去設定一個 不然的話就會出現兩個或者多個CountDownTimer同時運作 也就是發現一秒鐘不到時間 我們隻要把原先的取消就可以

“`

public void resetCountDownTimer(final TextView view, long max, long interval) {

if (countDownTimer != null) {
        countDownTimer.cancel();
    }
    if (max <= 0) {
        view.setText("倒計時結束!!!");
        return;
    }
    countDownTimer = new CountDownTimer(max * 1000, interval * 1000 - 10) {

        @Override
        public void onTick(long time) {
            view.setText("送出倒計時 " + DateUtil.getHour3(time / 1000));
        }

        @Override
        public void onFinish() {
            view.setText("倒計時結束!!!");
        }
    };
    countDownTimer.start();
}
           

如果有更好的處理方法歡迎留言指正 不勝感激

項目下載下傳位址:http://download.csdn.net/detail/u010142034/9628505

繼續閱讀