1

このコード ( CustomAdapterクラス内) は、テキスト メッセージの送信者に基づいて連絡先 ID のみを表示し、それらを ArrayList に入れ、リストを表示します。

holder.photo各連絡先 ID の横に呼び出される ImageView があります。連絡先の写真を ImageView に表示するにはどうすればよいですか?

        String folder = "content://sms/inbox/";
        Uri mSmsQueryUri = Uri.parse(folder);
        messages = new ArrayList<String>();
        contactID = new ArrayList<String>();
        SMS = new ArrayList<String>();

        try {
            c = context.getContentResolver().query(mSmsQueryUri,
                    new String[] { "_id", "address", "date", "body" },
                    null, null, null);
            if (c == null) {
                Log.i(TAG, "cursor is null. uri: " + mSmsQueryUri);
            }

        } catch (Exception e) {
            //Log.e(TAG, e.getMessage());
        } finally {
            c.close();
        }
            c.moveToFirst();
            while (c.moveToNext()) {

                phoneNumber = c.getString(0);
                contactID.add(phoneNumber);
            }
        holder.photo.?????
        //contact will cycle through all names and display each in a listview.
        holder.contact.setText(contactID.get(position);

現在、私のリストビューにはこれが表示されます:

  • android_icon-----ジョン・ドウ
  • android_icon-----ジェーン・スミス
  • android_icon-----フーバー
4

1 に答える 1

3

これを試して..

public void getContacts(ContentResolver cr) {
    Cursor phones = cr.query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
            null, null);
    while (phones.moveToNext()) {
        String name = phones
                .getString(phones
                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
        String contactId = phones
                .getString(phones
                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));

       Bitmap bitmap = loadContactPhoto(
                getContentResolver(), Long.valueOf(contactId))
       }
    phones.close();

ビットマップ画像を取得

public static Bitmap loadContactPhoto(ContentResolver cr, long 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);
}
于 2014-07-22T05:21:59.440 に答える