-1

リストビューにすべての連絡先を表示していますが、うまく機能しています。しかし、リストビューにも画像を追加したいです。たくさん検索しましたが、良いチュートリアルが見つかりませんでした。リストビューに連絡先画像を表示するためのチュートリアルをいくつか提案してください。以下は私のコードです。

Cursor cur = getContacts();

    ListView lv = getListView();

    String[] fields = new String[] {ContactsContract.Data.DISPLAY_NAME };


    adapter = new SimpleCursorAdapter(this,
            R.layout.contacts_list_row, cur, fields,
            new int[] { R.id.title}, 0);
    lv.setAdapter(adapter);

getContacts()

private Cursor getContacts() {
    // Run query
    Uri uri = ContactsContract.Contacts.CONTENT_URI;

    String[] projection = new String[] { ContactsContract.Contacts._ID,
            ContactsContract.Contacts.DISPLAY_NAME };
    String selection = null;
    String[] selectionArgs = null;
    String sortOrder = ContactsContract.Contacts.DISPLAY_NAME
            + " COLLATE LOCALIZED ASC";
    return managedQuery(uri, projection, selection, selectionArgs,
            sortOrder);
}

前もって感謝します :)

4

2 に答える 2

0

ImageView と TextView を使用してカスタム リスト ビューを作成し、次のコードを使用してコンテンツ プロバイダーから連絡先アイコン イメージを取得します。

   /**
     * @return the photo URI
     */
    public Uri getPhotoUri() {
        try {
            Cursor cur = this.ctx.getContentResolver().query(
                    ContactsContract.Data.CONTENT_URI,
                    null,
                    ContactsContract.Data.CONTACT_ID + "=" + this.getId() + " AND "
                            + ContactsContract.Data.MIMETYPE + "='"
                            + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null,
                    null);
            if (cur != null) {
                if (!cur.moveToFirst()) {
                    return null; // no photo
                }
            } else {
                return null; // error in cursor process
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long
                .parseLong(getId()));
        return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
    }

そして、状態画像が利用可能であることを確認してから、imageviewに設定します

 Uri u = objItem.getPhotoUri();
 if (u != null) {
    mPhotoView.setImageURI(u);
 } else {
    mPhotoView.setImageResource(R.drawable.defaultimage);
 }
于 2013-07-01T07:42:57.333 に答える