2013-06-21 1 views
0

Я пытаюсь отобразить контактную фотографию на ленивом адаптере. Мне удалось заставить Photo_ID поместить их в массивList. Я не уверен, как отображать его на изображении.ID контакта с контактом в виде списка - Lazyloading

Вот что я сделал:

 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; 

} 

}

Я застрял на отображая удостоверение личности с фотографией на стороне адаптера?

+0

Что такое ленивый адаптер и почему бы не написать код адаптера? – Shark

+0

a List View is alistview, адаптер отвечает за преобразование данных в представления - «настраиваемый просмотр списка» по сути представляет собой стилизованный XML, завышенный в противовес listview; отправляйте адаптор ..... – Shark

+0

Yep. обновленный код Пожалуйста, проверьте .. вопрос Спасибо! – TheDevMan

ответ

0

Попробуйте получить PHOTO_URI или PHOTO_THUMBNAIL_URI вместо PHOTO_ID. Затем просто отобразите его на ImageView с помощью адаптера.

Ссылка: ContactsContract.Contacts

+0

Я не могу получить PHOTO_URI, он просто дает мне PHOTO_ID ... в запросе, который я пытаюсь сделать – TheDevMan

+0

[Этот вопрос] (http://stackoverflow.com/questions/2383580/how-do-i- load-a-contact-photo) может вам помочь. – hypd09

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); 
    }