private ListView lv_contact;
private List<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();
private MyAdapter mAdapter;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
//8,填充数据适配器
mAdapter = new MyAdapter();
lv_contact.setAdapter(mAdapter);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact_list);
initUI();
initData();
}
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return contactList.size();
}
@Override
public HashMap<String, String> getItem(int i) {
return contactList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View v = View.inflate(getApplicationContext(), R.layout.listview_contact_item, null);
TextView tv_name = (TextView)v.findViewById(R.id.tv_name);
TextView tv_phone = (TextView)v.findViewById(R.id.tv_phone);
tv_name.setText(getItem(i).get("name"));
tv_phone.setText(getItem(i).get("phone"));
return v;
}
}
/**
* 获取联系人数据的方法
*/
private void initData() {
//因为读取系统联系人,可能是一个耗时操作,放置到子线程中处理
new Thread(){
public void run(){
//1,获取内容解析器对象
ContentResolver contentResolver = getContentResolver();
//2,做查询系统联系人数据库表过程(读取联系人权限)
Cursor cursor = contentResolver.query(
Uri.parse("content://com.android.contacts/raw_contacts"),
new String[]{"contact_id"},
null, null, null);
contactList.clear();
//3,循环游标,直到没有数据为止
while (cursor.moveToNext()){
String id = cursor.getString(0);
//4,根据用户唯一性id值,查询data表和mimetype表生成的视图,获取data以及mimetype字段
Cursor indexCursor = contentResolver.query(
Uri.parse("content://com.android.contacts/data"),
new String[]{"data1","mimetype"},
"raw_contact_id = ?", new String[]{id}, null);
//5,循环获取每一个联系人的电话号码以及姓名,数据类型
HashMap<String, String> hashMap = new HashMap<String, String>();
while (indexCursor.moveToNext()){
String data = indexCursor.getString(0);
String type = indexCursor.getString(1);
//6,区分类型去给hashMap填充数据
if(type.equals("vnd.android.cursor.item/phone_v2")) {
//数据非空判断
if(!TextUtils.isEmpty(data)) {
hashMap.put("phone", data);
}
}else if(type.equals("vnd.android.cursor.item/name")) {
if(!TextUtils.isEmpty(data)) {
hashMap.put("name", data);
}
}
}
indexCursor.close();
contactList.add(hashMap);
}
cursor.close();
//7,消息机制,发送一个空的消息,告知主线程可以去使用子线程已经填充好的数据集合
mHandler.sendEmptyMessage(0);
}
}.start();
}
private void initUI() {
lv_contact = (ListView) findViewById(R.id.lv_contact);
lv_contact.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//1,获取点中条目的索引指向集合中的对象
if(mAdapter != null) {
HashMap<String, String> hashMap = mAdapter.getItem(i);
//2,获取当前条目指向集合对应的电话号码
String phone = hashMap.get("phone");
//3,此电话号码需要给第三个导航界面使用
//4,在结束此界面回到前一个导航界面的时候,需要将数据返回过去
Intent intent = new Intent();
intent.putExtra("phone", phone);
setResult(0, intent);
finish();
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(data != null) {
//1,返回到当前界面的时候,接受结果的方法
String phone = data.getStringExtra("phone");
//2,将特殊字符过滤(中划线转换成空字符串)
phone = phone.replace("-", "").replace(" ", "").trim();
et_phone_number.setText(phone);
//3,存储联系人至sp中
SpUtil.putString(getApplicationContext(), ConstantValue.CONTACT_PHONE, phone);
}
super.onActivityResult(requestCode, resultCode, data);
}
private void initUI() {
//显示电话号码的输入框
et_phone_number = (EditText)findViewById(R.id.et_phone_number);
//获取联系人电话号码回显过程
String contact_phone = SpUtil.getString(this, ConstantValue.CONTACT_PHONE, "");
et_phone_number.setText(contact_phone);
bt_select_number = (Button) findViewById(R.id.bt_select_number);
//点击选择联系人的对话框
bt_select_number.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), ContactListActivity.class);
startActivityForResult(intent, 0);
}
});
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有