Display all contacts in a ListView
Description
The following code shows how to Display all contacts in a ListView.
Example
Main Activity Java code
package com.java2s.myapplication3.app;
//w w w . j a v a 2 s . c o m
import android.app.AlertDialog;
import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.AdapterView;
import android.widget.SimpleCursorAdapter;
public class MainActivity extends ListActivity implements AdapterView.OnItemClickListener {
Cursor mContacts;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] projection = new String[] { ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME };
mContacts = managedQuery(ContactsContract.Contacts.CONTENT_URI,
projection, null, null, ContactsContract.Contacts.DISPLAY_NAME);
//
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, mContacts,
new String[] { ContactsContract.Contacts.DISPLAY_NAME },
new int[] { android.R.id.text1 });
setListAdapter(mAdapter);
// Listen for item selections
getListView().setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
if (mContacts.moveToPosition(position)) {
int selectedId = mContacts.getInt(0); // _ID column
// Gather email data from email table
Cursor email = getContentResolver().query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
new String[] { ContactsContract.CommonDataKinds.Email.DATA },
ContactsContract.Data.CONTACT_ID + " = " + selectedId, null, null);
//Build the dialog message
StringBuilder sb = new StringBuilder();
sb.append(email.getCount() + " Emails\n");
if (email.moveToFirst()) {
do {
sb.append("Email: " + email.getString(0));
sb.append('\n');
} while (email.moveToNext());
sb.append('\n');
}
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(mContacts.getString(1)); // Display name
builder.setMessage(sb.toString());
builder.setPositiveButton("OK", null);
builder.create().show();
email.close();
}
}
}