ListView中每个item中定时器

直接上源码:

package com.example.myviewpager.daojishi;


import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;


import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;


import com.example.myviewpager.R;


public class Test1Activity extends Activity {


/**截至时间数据源**/
private ArrayList<HashMap<String, String>> infoMapList = new ArrayList<HashMap<String, String>>();
private HashMap<String, String> infoMap = null;
    /**当前时间**/
    private int time_Current = 1;
/**ListView控件**/
private ListView listView;
/**适配器**/
private MyCountAdapter myCountAdapter;
 
private int minute = 0;
private int second = 0;
 
 

//这里很重要,使用Handler的延时效果,每隔一秒刷新一下适配器,以此产生倒计时效果
    private Handler handler_timeCurrent = new Handler(){
        @Override
        public void handleMessage(Message msg) {
        time_Current = time_Current+1;
myCountAdapter.notifyDataSetChanged();
            handler_timeCurrent.sendEmptyMessageDelayed(0,1000);
        }
    };

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_one);

listView = (ListView) findViewById(R.id.listView);

}

//防止当前Activity结束以后,   handler依然继续循环浪费资源
@Override
protected void onDestroy() {

System.out.println("_______________我毁灭了______________________");
super.onDestroy();
}



@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
handler_timeCurrent.removeCallbacksAndMessages(null);
System.out.println("_______________我暂停了______________________");

}


@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();

time_Current = 1;
minute = 0;
second = 0;

//模拟活动截至时间数据
infoMapList = new ArrayList<HashMap<String, String>>();
for(int i=0;i<3;i++){
infoMap = new HashMap<String, String>();
           infoMap.put("allTime", i+"");
           infoMap.put("address", "地址"+i+"");
           infoMapList.add(infoMap);
}
myCountAdapter = new MyCountAdapter();
listView.setAdapter(myCountAdapter);

       handler_timeCurrent.sendEmptyMessageDelayed(0,1000);
System.out.println("_______________我重新唤起了______________________");
}






public class MyCountAdapter extends BaseAdapter{


@Override
public int getCount() {
return infoMapList.size();
}


@Override
public Object getItem(int position) {
return infoMapList.get(position);
}


@Override
public long getItemId(int position) {
return position;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null){
convertView = View.inflate(Test1Activity.this, R.layout.activity_test_one_item, null);
holder = new ViewHolder();
holder.tv_second = (TextView) convertView.findViewById(R.id.tv_second);
holder.tv_minute = (TextView) convertView.findViewById(R.id.tv_minute);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
String date_finish = infoMapList.get(position).get("allTime");
holder.tv_minute.setText(infoMapList.get(position).get("address"));
int finishTime = Integer.parseInt(date_finish);
finishTime = finishTime * 60 +30;
updateTextView( finishTime-time_Current, holder);
return convertView;
}
/****
* 刷新倒计时控件
*/
public void updateTextView(int times_remain,ViewHolder hoder) {
System.out.println("________times_remain__________"+times_remain);
if(times_remain<=0){
hoder.tv_second.setText("已完成");
}else{
minute = times_remain/60;
if(minute!=0){
hoder.tv_second.setText("约" + minute+"分钟");
       }else{
           second = times_remain%60;
           if(second!=0){
            hoder.tv_second.setText("约" + minute+"分钟");
           }else{
            hoder.tv_second.setText("已完成");
            //handler_timeCurrent.removeCallbacksAndMessages(null);
           }
       }
}

}

private class ViewHolder{

/** 秒 **/
private TextView tv_second;
/** 秒 **/
private TextView tv_minute;

}
}





}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值