• 显示联系人头像


    显示联系人头像和名字
    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;
    }
    

  • 相关阅读:
    Windows 下Npm和NodeJS升级
    解决本地端口占用问题
    eclipse spring boot项目部署
    JPA 使用 Specification 复杂查询和 Criteria 查询
    datepicker 属性设置 以及方法和事件
    sqlServer拼结列字符串
    Gson基本操作,JsonObject,JsonArray,String,JavaBean,List互转
    PNChart,简洁高效有动画效果的iOS图表库
    PureLayout,使用纯代码写AutoLayout
    iRate快速绕坑使用
  • 原文地址:https://www.cnblogs.com/pandans/p/1892597.html
Copyright © 2020-2023  润新知