package cn.itcast.mobileguard;
import java.util.List;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.MemoryFile;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import cn.itcast.mobileguard.db.dao.BlackNumberDao;
import cn.itcast.mobileguard.domain.BlackNumber;
public class CallSmsSafeActivity extends Activity {
public static final String TAG = "CallSmsSafeActivity";
private ListView lv_call_sms_safe;
private BlackNumberDao dao;
private List<BlackNumber> blackNumbers;
private LinearLayout ll_loading;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_call_sms_safe);
lv_call_sms_safe = (ListView) findViewById(R.id.lv_call_sms_safe);
ll_loading = (LinearLayout) findViewById(R.id.ll_loading);
dao = new BlackNumberDao(this);
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
blackNumbers = dao.findAll();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPreExecute() {
ll_loading.setVisibility(View.VISIBLE);
super.onPreExecute();
}
@Override
protected void onPostExecute(Void result) {
ll_loading.setVisibility(View.INVISIBLE);
lv_call_sms_safe.setAdapter(new CallSmsAdapter());
super.onPostExecute(result);
}
}.execute();
super.onCreate(savedInstanceState);
}
private class CallSmsAdapter extends BaseAdapter {
public int getCount() {
return blackNumbers.size();
}
public Object getItem(int position) {
return blackNumbers.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
ViewHolder holder;
if (convertView != null && convertView instanceof RelativeLayout) {
view = convertView;
Log.i(TAG, "使用缓存view对象" + position);
holder = (ViewHolder) view.getTag();
} else {
Log.i(TAG, "创建新的view对象" + position);
view = View.inflate(getApplicationContext(),
R.layout.layout_call_sms_item, null);
holder = new ViewHolder();
holder.tv_mode = (TextView) view
.findViewById(R.id.tv_call_sms_item_mode);
holder.tv_number = (TextView) view
.findViewById(R.id.tv_call_sms_item_number);
//把textview对象的引用存放在 view对象里面.
//减少了控件被查询的次数,只在控件被初始化 查询寻找控件
view.setTag(holder);
}
BlackNumber blackNumber = blackNumbers.get(position);
String mode = blackNumber.getMode();
if ("phone".equals(mode)) {
holder.tv_mode.setText("电话拦截");
} else if ("sms".equals(mode)) {
holder.tv_mode.setText("短信拦截");
} else {
holder.tv_mode.setText("全部拦截");
}
holder.tv_number.setText(blackNumber.getNumber());
return view;
}
}
static class ViewHolder{
TextView tv_mode;
TextView tv_number;
}
}