2015年5月8日 星期五

ListView加載聯絡人資料

製作一個清單的XML
main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <ListView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/listview" />

</RelativeLayout>
可以利用這樣的方法取得電話與人名
Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
Final_code
package com.givemepass.providercontactdemo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class ProviderContactDemoActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    private ListView listView;
    private SimpleAdapter adapter;
    private static final String NAME = "name";
    private static final String NUMBER = "number";
    private Map contactsMap;
    ArrayList> contactsArrayList;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        listView = (ListView) findViewById(R.id.listview);

        contactsArrayList = new ArrayList>();
        getPhoneBookData();
        adapter = new SimpleAdapter(this,
                contactsArrayList,
                android.R.layout.simple_list_item_2, new String[]{NAME,
                NUMBER}, new int[]{android.R.id.text1,
                android.R.id.text2});
        listView.setAdapter(adapter);
    }

    public void getPhoneBookData() {
  /*取得聯絡人姓名和電話*/
        Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
        String phoneNumber = "";
        String name = "";

        while (cursor.moveToNext()) {
            contactsMap = new HashMap();

            name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            contactsMap.put(NAME, name);
            contactsMap.put(NUMBER, phoneNumber);
            contactsArrayList.add(contactsMap);
        }
    }
}
參考資料:
http://givemepass.blogspot.tw/2011/11/phone-book-contentresolver.html
Download_code:
http://uploadingit.com/file/st6wlycv8dxdanmr/ProviderContactDemo.rar

沒有留言:

張貼留言