Android: установите фотографию контакта в ListView с именем и номером - PullRequest
3 голосов
/ 14 февраля 2011

Я создаю приложение, которое должно отображать контакты телефона с его фотографией, именем и номером.Я создал ListView и могу отображать контакты и номера с обычной фотографией, но не могу показать изображение contat.Это мой код: </p> <pre><code>Cursor cursor = getContacts(); String[] fields = new String[] {Contacts.DISPLAY_NAME, Phone.NUMBER}; SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.contact_entry, cursor, fields, new int[] {R.id.contactEntryText, R.id.contactEntryNumber}); mContactList.setAdapter(adapter); private Cursor getContacts() // Run query Uri uri = Phone.CONTENT_URI; String[] projection = new String[] { Contacts._ID, Contacts.DISPLAY_NAME, Phone.NUMBER, Contacts.PHOTO_ID }; //String selection = Contacts.HAS_PHONE_NUMBER + "='1'"; String selection = null; String[] selectionArgs = null; String sortOrder = Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; return managedQuery(uri, projection, selection, selectionArgs, sortOrder); }

Как мне прикрепить фотографию контакта в SimpleCursorAdapter?Есть еще один?

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 14 марта 2011

Я понял это.Если у кого-то была такая же проблема, вот как я это сделал:

В операции, которая расширяет ListActivity:

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Cursor names = getNamesAndPictures();
    names.moveToFirst();        
    ListAdapter adapter = new MySimpleCursorAdapter(this, R.layout.contacts,
                names, new String[] {Phones.NAME, Phones.NUMBER}, new int[] {
                R.id.Nombre, R.id.Numero});
    setListAdapter(adapter);
    startManagingCursor(names);
    Log.i(DEBUG_TAG, "Mi numero: " + miNumeroTelefono());        
}

public Cursor getNamesAndPictures(){
     String[] projection = new String[] {
             Phones.NUMBER,
             Phones.PERSON_ID,
             People.NAME,
             People._ID
     };
     String selection = Phones.NAME + "!='null'";
     String sortOrder = Phones.NAME + " COLLATE LOCALIZED ASC";
     Cursor cursor = managedQuery(Phones.CONTENT_URI, projection, selection, null, sortOrder);
     return cursor;
}

В пользовательском адаптере:

public class MySimpleCursorAdapter extends SimpleCursorAdapter {

  ...

  @Override
  public void bindView(View view, Context context, Cursor cursor) {
      ImageView imageView = (ImageView) view.findViewById(R.id.Foto);

      int id = cursor.getColumnIndex(Phones.PERSON_ID);
      Uri uri = ContentUris.withAppendedId(Phones.CONTENT_URI, cursor.getLong(id));
      String uriPhoto = uri.toString();
      String uriPeople = uriPhoto.replace("phones", "people");

      Uri uriFinal = Uri.parse(uriPeople);

      Bitmap bitmap = People.loadContactPhoto(context, uriFinal, R.drawable.avatar02, null);
      imageView.setImageBitmap(bitmap);
      super.bindView(view, context, cursor);
  }
}
0 голосов
/ 08 июня 2016

Я знаю, что это очень старый вопрос, но ответ таков, так как в этом решении мало что устарело.Поскольку вопрос обнаружился в поисках, когда я искал похожее решение, я добавил свои два цента здесь ...

Я создал простой список контактов с их именами и фотографиями из ContactsContract.Пожалуйста, проверьте мой ответ на ... https://stackoverflow.com/a/37710199/1209544

...