我已經使用擴展的SimpleCursorAdapter將我的聯繫人加載到列表中,現在我正在嘗試加載聯繫人照片。當運行代碼隨機聯繫照片出現在隨機聯繫人旁邊,即使對於沒有照片的人也是如此。爲什麼它只是獲得那些有他們並顯示在他們旁邊的聯繫人的照片?將聯繫人照片加載到聯繫人列表中:隨機聯繫人照片出現在錯誤的地方
下面是代碼:
public void bindView(View view, Context context, Cursor cursor) {
ImageView photo = (ImageView) findViewById(R.id.photo);
long photoId = cursor.getLong(cursor.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));
Bitmap photoBitmap = loadContactPhoto(photoId);
if (photoBitmap != null) {
photo.setImageBitmap(photoBitmap);
}
和代碼來loadContactPhoto:
public Bitmap loadContactPhoto(long id) {
Uri contactUri = ContentUris.withAppendedId(ContactsContract.Data.CONTENT_URI, id);
byte[] data = null;
Cursor cursor = managedQuery(
contactUri, // Uri
new String[] { ContactsContract.CommonDataKinds.Photo.PHOTO }, // projection, the contact photo
ContactsContract.Contacts.PHOTO_ID + "!= 0", // where statement, only if the contact has a photo
null, null);
Log.i(LOG_TAG, "cursorCount: " + cursor.getCount()); // returns 1
if (cursor == null || !cursor.moveToNext()) {
return null;
}
data = cursor.getBlob(0);
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
return bitmap;
}
你是如何實現「查看視圖?」的。 – SpicyWeenie