【contentprovider系列2】查询联系人的信息

来源:互联网 发布:dijkstra算法原理 编辑:程序博客网 时间:2024/06/06 02:17

布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:orientation="vertical"              android:layout_width="fill_parent"              android:layout_height="fill_parent"        >    <ListView            android:id="@+id/listview"            android:layout_width="match_parent"            android:layout_height="wrap_content"            ></ListView></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:orientation="horizontal"              android:layout_width="match_parent"              android:layout_height="match_parent">    <TextView            android:id="@+id/t1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            />    <TextView            android:id="@+id/t2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            /></LinearLayout>

自定义适配器

package com.ht.contentprovider150505;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import java.util.List;import java.util.Map;/** * Created by IntelliJ IDEA * Project: com.ht.mynote.adapters * Author: 安诺爱成长 * Email: 1399487511@qq.com * Date: 2015/5/2 */public class MyAdapter extends BaseAdapter {    private Context context;    private List<Map<String, String>> list;    public MyAdapter(Context context, List<Map<String, String>> list) {        this.context = context;        this.list = list;    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int i) {        return list.get(i);    }    @Override    public long getItemId(int i) {        return i;    }    @Override    public View getView(int i, View view, ViewGroup viewGroup) {        ViewHolder viewHolder = null;        if (view == null) {            view = LayoutInflater.from(context).inflate(R.layout.item_contacts, null);            viewHolder = new ViewHolder();            viewHolder.t1 = (TextView) view.findViewById(R.id.t1);            viewHolder.t2 = (TextView) view.findViewById(R.id.t2);            view.setTag(viewHolder);        } else            viewHolder = (ViewHolder) view.getTag();        viewHolder.t1.setText(list.get(i).get("name"));        viewHolder.t2.setText(list.get(i).get("phone"));        return view;    }    private class ViewHolder {        private TextView t1;        private TextView t2;    }}

mainactivity

package com.ht.contentprovider150505;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.os.Bundle;import android.provider.ContactsContract;import android.widget.*;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class MainActivity extends Activity {    private ListView listView;    private ListAdapter adapter;    /**     * Called when the activity is first created.     */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ContentResolver cr = getContentResolver();        //得到的是所有的联系人信息        Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI,                null,                null,                null,                null);        List<Map<String, String>> mapList = new ArrayList<>();        while (cursor.moveToNext()) {            Map map = new HashMap<>();            // 取得联系人名字            int nameFieldColumnIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);            String name = cursor.getString(nameFieldColumnIndex);            map.put("name", name);            // 取得联系人ID            String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));            //这里的URI是一个字段            Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "                    + contactId, null, null);            List<String> list = new ArrayList<>();            // 取得电话号码(可能存在多个号码)            while (phone.moveToNext())            {                String strPhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));                list.add(strPhoneNumber);            }            phone.close();            map.put("phone", list.toString());            mapList.add(map);        }        cursor.close();        ListView listView = (ListView) findViewById(R.id.listview);        MyAdapter myAdapter = new MyAdapter(this, mapList);        listView.setAdapter(myAdapter);    }}
1 0
原创粉丝点击