2012-02-13 9 views
0

写真の連絡先をリストしていますが、連絡先の写真を表示できませんでした。私はしません//com.android.contacts/contacts/52ImageView.setImageURIメソッドはアンドロイドの画像を表示しません

  ContentResolver cr = getContentResolver(); 
//   Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,null, null,null); 
      Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, ContactsContract.Contacts.DISPLAY_NAME + " ASC"); 
      if (cur.getCount() > 0) { 
       while (cur.moveToNext()) { 
        id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
        name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
        photo_id = cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.PHOTO_ID)); 
        Log.e("name", name); 
        Log.e("Photo_id", ""+photo_id); 
        photo = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, photo_id); 
        Log.e("URI", ""+photo); 
        image.setImageURI(photo); // Does not shown image. 
        ... 
        } 
       } 

(ログに印刷された)サンプルURI:

内容を以下のように私は写真のURIを取得しますウリがイメージを示さない理由を知ってください。私を助けてください。

+0

デバッグしましたか?あなたのUriArrayListが必要なオブジェクトを持っていないか、あなたのphoto_viewがnullであることを意味します。あなたはそれをデバッグしようとしましたか?どのオブジェクトがnullですか? –

+0

ArrayListにはUri値があります。質問に記載されているように、画像ビューにnullポインタが付いています –

+0

あなたのviewholderでphoto_viewをどのように設定しますか?どのように初期化しますか?おそらくあなたのアダプタのgetView()で?私はそれのためのコードが表示されません。 –

答えて

1

私はビットマップを使用して私の問題を解決しました。 imageView.setImageURIは私のために使用されていません。 setImageURIの代わりに次のコードを使用します。

private Bitmap loadContactPhoto(ContentResolver cr, int id) { 
     Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id); 
     InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri); 
     if (input == null) { 
      return null; 
     } 
     return BitmapFactory.decodeStream(input); 

    } 

ここで、idは連絡先の写真IDではなく連絡先IDです。

関連する問題