是这样,我做个简单的通讯录,截取其中的一部分
if (phoneCursor != null) {
    while (phoneCursor.moveToNext()) { //得到手机号码
String phoneNumber = phoneCursor.getString(1);
//当手机号码为空的或者为空字段 跳过当前循环
if (TextUtils.isEmpty(phoneNumber))
    continue;
//得到联系人名称
String contactName = phoneCursor.getString(0);
//得到联系人ID
Long contactid = phoneCursor.getLong(3);
Long photoid = phoneCursor.getLong(2);
//得到联系人头像Bitamp
Bitmap contactPhoto = null;
//photoid 大于0 表示联系人有头像 如果没有给此人设置头像则给他一个默认的
if(photoid > 0 ) {
    Uri uri =ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,contactid);
    InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(resolver, uri);
    contactPhoto =BitmapFactory.decodeStream(input);
    
}else {
    contactPhoto = BitmapFactory.decodeResource(getResources(), R.drawable.list_photo_default);
}
HashMap<String,Object> map=new HashMap<String,Object>();
map.put("Name", contactName);
map.put("Num", phoneNumber);
map.put("Photo",........);
ContactsList.add(map); 
.................................................
其中"Name"和"Num"字段正常显示,"Photo"字段中需要添加的是R.drawable.XXXX.png这种类型的int值,问题是若是我程序中自己的图片,当然只需这样引用就可以了,但是现在我是从数据库中获取的图片,请问,该如何将通讯录中获取的图片转化成相应的可以使用的int类型???

解决方案 »

  1.   

    这个估计不行,R.drawable.xxx,id是唯一的,有系统生成的,既然可以获得bitmap对象,为何不直接使用bitmap
      

  2.   


    我是想把他们全部添加到map中。请问直接使用bitmap该如何实现????
      

  3.   

    你在数据库里面存放的是图片的路径的话,就
    map.put("Photo", "图片路径");这样就可以了。
    在用ListView的时候,设置好adapter对应ImageView和Photo会自动显示图片的。
      

  4.   

    图片是我自己从通讯录中读取的,然后生成bitmap对象
      

  5.   

    使用BitmapFactory,可以把联系人头像取出来,转成bitmap。