Android程序設計-簡單手機通訊錄


    在微信中,手機QQ中你會發現軟件讀取手機通訊錄這個功能,這個功能使得軟件更好的與手機聯系人綁定,從而達到分享,撥打電話,讀取用戶信息等操作。下面我們將通過一個demo實現這個功能

   首先我們看一下效果圖:

demo

 

-----------------------------------------------------------【正題部分】-----------------------------------------------

【開發環境】Android Stdio 1.1.0

【分析】

   軟件中含有一個控件ListView,這個控件可謂是Android程序設計中最最最最實用的一個控件了,自定義item的布局,控件中的數據來源於你的手機通訊錄的內容,所以適配器選擇:CursorAdapter或者BaseAdapter,小編使用的是CursorAdapter,取得數據並且賦予item,demo中還需要重要的一點就是獲取讀取手機通訊錄的權限

【編碼】

(1)布局方面的代碼小編不予細解,具體看文章下面的demo

(2)聯系人信息實體類

package cn.edu.bzu.contacts_listview;

/**
 * Created by monster on 2015/4/26.
 * 聯系人實體類
 * 功能:實現了People聯系人實體類
 */
public class myFile {
    public String PeopleName;
    public int ImgId;
    public String PeopleNumber;

    public myFile(String peopleName, int imgId, String peopleNumber) {
        super();
        PeopleName = peopleName;
        ImgId = imgId;
        PeopleNumber = peopleNumber;
    }

    public myFile() {
        super();
    }
}

(3)聯系人列表的適配器

/**
 * Created by monster on 2015/4/26.
 */
public class PeopleListAdapter extends CursorAdapter {
    private LayoutInflater mInflater;//定義LayoutInflater對象
    public PeopleListAdapter(Context context, Cursor c) {
        super(context, c);
        mInflater=LayoutInflater.from(context);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        //初始化每一個item的View
        return mInflater.inflate(R.layout.activity_list_item,parent,false);
    }


    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        //設置Item的布局效果
        ViewHolder viewHolder=new ViewHolder();
        viewHolder.PeopleImage=(ImageView)view.findViewById(R.id.IvNews);
        viewHolder.PeopleName=(TextView)view.findViewById(R.id.TvNewsTitle);
        viewHolder.PeopleNumber=(TextView)view.findViewById(R.id.TvNewsInfo);
        //從手機聯系人中讀取數據
       viewHolder.PeopleImage.setBackgroundResource(R.mipmap.ic_launcher);
        viewHolder.PeopleName.setText(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)));
        viewHolder.PeopleNumber.setText(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
    }
    class ViewHolder{
        ImageView PeopleImage;
        TextView PeopleName;
        TextView PeopleNumber;
    }
}

(4)書寫MainActivity.java

package cn.edu.bzu.contacts_listview;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.ListView;


public class MainActivity extends Activity {
    private ListView Lv;
    private PeopleListAdapter adapter;
    private Cursor cursor;//定義用來存儲需要顯示的對象的cursor
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findView();//控件實例化
         setData();//設置數據
         setLv();//綁定適配器
    }

    private void setLv() {
        adapter=new PeopleListAdapter(MainActivity.this,cursor);
        Lv.setAdapter(adapter);
    }

    private void setData() {
        //通過getContentResolver獲取手機中聯系人信息
        cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);

    }

    private void findView() {
        Lv=(ListView)findViewById(R.id.LV);
    }


}

(5)在清單文件中設置權限

<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

----------------------------------------------------【總結部分】------------------------------------------------------

【總結】

適配器中繼承的是CursorAdapter適配器:必須實現的三個方法為:

public PeopleListAdapter(Context context, Cursor c)

public View newView(Context context, Cursor cursor, ViewGroup parent)  --->>初始化每一個itemView

public void bindView(View view, Context context, Cursor cursor)       ---->>設置Item的布局效果

(讀取手機聯系人的數據)

cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))  --->>讀取聯系人姓名的代碼

cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))       --->>讀取聯系人號碼的代碼

 

【附錄】

源代碼地址:https://github.com/monsterLin/contacts_listview


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM