zoukankan      html  css  js  c++  java
  • 显示联系人头像

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

  • 相关阅读:
    .NET 分布式架构开发实战之一
    frame中隐藏横向滚动条
    实时检测网络状态及是否可以连接Internet
    jquery表格插件推荐
    FireFox窗体frameset,iframe间的js调用方法
    用C#实现实现简单的 Ping 的功能,用于测试网络是否已经联通
    一个阴历阳历互相转化的类
    CSS技巧 — 不使用图片实现圆角、阴影、渐变等功能
    Windows下命令行下启动ORACLE服务
    使用C#进行点对点通讯和文件传输(通讯基类部分)
  • 原文地址:https://www.cnblogs.com/pandans/p/1892597.html
Copyright © 2011-2022 走看看