システムコンテンツプロバイダにアクセスし、連絡先リストを取得
14683 ワード
1:Contact.java
2:list_contact_item.xml
3:ContactAdapter.java
4:MainActivity.java
5:activity_main.xml
6:権限の宣言
package com.example.bean;
public class Contact {
private String name;
private String phoneNumber;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
2:list_contact_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_margin="16dp">
<TextView
android:id="@+id/tvContactName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:singleLine="true"
android:ellipsize="end"/>
<TextView
android:id="@+id/tvContactPhoneNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:singleLine="true"
android:ellipsize="end"/>
</LinearLayout>
3:ContactAdapter.java
package com.example.adapter;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.example.bean.Contact;
import com.example.contacttest.R;
public class ContactAdapter extends ArrayAdapter<Contact>{
int resourceId;
public ContactAdapter(Context context, int resourceId, List<Contact> list){
super(context,resourceId,list);
this.resourceId = resourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Contact contact = getItem(position);
View view;
ViewHolder holder;
if(convertView==null){
view = LayoutInflater.from(getContext()).inflate(resourceId, null);
holder = new ViewHolder();
holder.tvContactName = (TextView)view.findViewById(R.id.tvContactName);
holder.tvContactPhoneNumber = (TextView)view.findViewById(R.id.tvContactPhoneNumber);
holder.tvContactName.setText(contact.getName());
holder.tvContactPhoneNumber.setText(contact.getPhoneNumber());
view.setTag(holder);
}else{
view = convertView;
holder = (ViewHolder)view.getTag();
}
return view;
}
class ViewHolder{
TextView tvContactName;
TextView tvContactPhoneNumber;
}
}
4:MainActivity.java
package com.example.contacttest;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.ListView;
import com.example.adapter.ContactAdapter;
import com.example.bean.Contact;
public class MainActivity extends Activity {
List<Contact> list = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = new ArrayList<Contact>();
ListView lvContact = (ListView)findViewById(R.id.lvContact);
ContactAdapter adapter = new ContactAdapter(this, R.layout.list_contact_item, list);
lvContact.setAdapter(adapter);
getContacts();
}
void getContacts(){
Cursor cursor = null;
try{
cursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null, null, null, null);
if(cursor!=null){
Contact contact;
while(cursor.moveToNext()){
contact = new Contact();
contact.setName(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)));
contact.setPhoneNumber(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
list.add(contact);
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(cursor!=null){
cursor.close();
}
}
}
}
5:activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.contacttest.MainActivity$PlaceholderFragment" >
<ListView
android:id="@+id/lvContact"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
6:権限の宣言
<uses-permission android:name="android.permission.READ_CONTACTS"/>