0

怠惰なアダプターに連絡先の写真を表示しようとしています。Photo_ID を取得して arrayList に入れることができました。画像ビューに表示する方法がわかりません。

これが私がしたことです:

        while (cur.moveToNext()) 
        {
            String Sid = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
            String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            String photo = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));

            Log.e("Photo",""+photo);

            HashMap<String, String> map = new HashMap<String, String>();

            map.put("name", name);
            map.put("id", Sid);
            map.put("photo",photo);

            DetailsList.add( map);
        }
    }
    cur.close(); 


    adapter = new ContactNamesAdapter(this, DataList);        
    // updating listview
    cl.setAdapter(adapter);
}

}

写真の値をログに記録する場合: photo_ID# を取得します。呼び出したアダプター クラスは、次のような名前を示します。

public View getView(int position, View convertView, ViewGroup parent) 
{
    View vi=convertView;
    if(convertView==null)

        vi = inflater.inflate(R.layout.contacts_names_row, null);

    TextView name = (TextView)vi.findViewById(R.id.name);
    name.setText(data.get(position).get("name"));   

    return vi;

}

}

アダプター側に写真付き ID を表示することに行き詰まっていますか?

4

2 に答える 2

0

詳細な調査の結果、これが画像を表示する最も簡単な方法であることがわかりました。現在は正常に動作しています!

 ImageView profile  = (ImageView)vi.findViewById(R.id.imageHolder);                 
    Uri my_contact_Uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, String.valueOf(id);
    InputStream photo_stream = ContactsContract.Contacts.openContactPhotoInputStream(getContext().getContentResolver(),my_contact_Uri);            
    if(photo_stream != null) 
    {
    BufferedInputStream buf =new BufferedInputStream(photo_stream);
    Bitmap my_btmp = BitmapFactory.decodeStream(buf);
    profile.setImageBitmap(my_btmp);
    }
    else
    {
        profile.setImageResource(R.drawable.no_pic);
    }
于 2013-06-22T04:12:13.310 に答える