显示联系人头像

显示联系人头像和名字
package com.gaotong.buddy.adapter;

import java.io.InputStream;

import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.gaotong.buddy.R;

public class ContactCursorAdapter extends CursorAdapter {
	private Context context;

	public ContactCursorAdapter(Context context, Cursor c, boolean autoRequery) {
		super(context, c, autoRequery);
	}

	public ContactCursorAdapter(Context context, Cursor c) {
		super(context, c);
		this.context = context;
	}

	@Override
	public View newView(Context context, Cursor cursor, ViewGroup parent) {

		final LayoutInflater inflater = LayoutInflater.from(context);
		final View view = inflater.inflate(R.layout.contacts_list_item, null);
		final ContactItem contactItem = new ContactItem();
		contactItem.imageView = (ImageView) view.findViewById(R.id.imgchoose);
		contactItem.textView = (TextView) view.findViewById(R.id.txtchoose);
		view.setTag(contactItem);
		return view;
	}

	@Override
	public void bindView(View view, Context context, Cursor cursor) {
		final ContactItem contactItem = (ContactItem) view.getTag();
		ImageView imgHead = contactItem.imageView;
		TextView txtName = contactItem.textView;
		long contactId = cursor.getLong(0);
		imgHead.setImageBitmap(getContactHead(contactId));
		txtName.setText(getContactDisplayName(contactId));

	}

	private String getContactDisplayName(long contactId) {
		String contactName = null;
		Cursor c = context.getContentResolver().query(
				ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId),
				new String[] { Contacts.DISPLAY_NAME }, null, null, null);
		try {
			if (c != null && c.moveToFirst()) {
				contactName = c.getString(0);
			}
		} finally {
			if (c != null) {
				c.close();
			}
		}
		if (contactName == null) {
			contactName = "";
		}
		return contactName;
	}

	private Bitmap getContactHead(long contactId) {
		Bitmap bitmap = null;
		// Cursor c =
		// context.getContentResolver().query(ContentUris.withAppendedId(Contacts.CONTENT_URI,
		// contactId), new String[] {Contacts.PHOTO_ID}, null, null, null);
		ContentResolver cr = context.getContentResolver();
		Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
		InputStream input = Contacts.openContactPhotoInputStream(
				context.getContentResolver(), uri);
		if (input != null) {
			bitmap = BitmapFactory.decodeStream(input);
		} else {
			bitmap = BitmapFactory.decodeResource(context.getResources(),
					R.drawable.head0);
		}
		return bitmap;
	}

}

class ContactItem {
	ImageView imageView;
	TextView textView;
}

原文地址:https://www.cnblogs.com/pandans/p/1892597.html