package com.archer.calllog;

import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.CallLog.Calls;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.text.format.DateFormat;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.Filter;
import android.widget.ListView;
import android.widget.TextView;

public class CalllogActivity extends Activity {
/** Called when the activity is first created. */
EditText et_number;
ListView lv_call_log;
private final static String[] PROJECTION = new String[]{Calls._ID,Calls.NUMBER,Calls.DATE,Calls.TYPE};
CallsAdapter myAdapter = new CallsAdapter(this, null);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et_number = (EditText) findViewById(R.id.et_number);
lv_call_log = (ListView) findViewById(R.id.lv_call_log);

lv_call_log.setAdapter(myAdapter);
et_number.addTextChangedListener(new MyTextWatcher());
}
private final class MyTextWatcher implements TextWatcher{

public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
public void afterTextChanged(Editable s) {
Filter mFilter = myAdapter.getFilter();
mFilter.filter(s.toString(), lv_call_log);
}
}

private final class CallsAdapter extends CursorAdapter{

public CallsAdapter(Context context, Cursor c) {
super(context, c);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = getLayoutInflater().inflate(R.layout.item, null);
return view;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView tv_number = (TextView) view.findViewById(R.id.tv_number);
TextView tv_date = (TextView) view.findViewById(R.id.tv_date);
TextView tv_type = (TextView) view.findViewById(R.id.tv_type);


String number = cursor.getString(1);
long date = cursor.getLong(2);
int type = cursor.getInt(3);

tv_number.setText(number);
tv_date.setText(DateFormat.getDateFormat(context).format(date));
switch (type) {
case Calls.INCOMING_TYPE:
tv_type.setText("来电");
break;
case Calls.OUTGOING_TYPE:
tv_type.setText("去电");
break;
case Calls.MISSED_TYPE:
tv_type.setText("未接");
break;

default:
break;
}
}

@Override
public Cursor runQueryOnBackgroundThread(CharSequence constraint) {
if(TextUtils.isEmpty(constraint)){
return null;
}
Uri uri = Calls.CONTENT_URI;
String selection = Calls.NUMBER + " like '%" + constraint + "%'";
Cursor cursor = getContentResolver().query(uri, PROJECTION, selection, null, Calls.DATE + " desc");

return cursor;
}
}
}

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. 关于android的animation的xml定义中的and
  2. Android(安卓)Contacts的使用(一)
  3. Android开发要看的网站(不断更新中)
  4. 使用Eclipse开发Android时整个工程或第三
  5. Android常用布局之LinearLayout(线性布局
  6. 麦子学院Android应用开发工程师视频教程
  7. Android(安卓)Studio开发环境的搭建
  8. Android中的人脸检测(静态和动态)
  9. Android(安卓)状态栏通知Notification(转
  10. Android(安卓)的属性系统