2013-06-21 86 views
0

我試圖在我的延遲適配器上顯示聯繫人照片。我設法得到Photo_ID把它們放入一個arrayList我不知道如何顯示它在圖像視圖。列表視圖上的聯繫人照片ID - 延遲加載

這裏是我做了什麼:

 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

列表視圖是alistview,一個適配器負責將數據轉換爲視圖 - 「自定義列表視圖」本質上是一種擴展到listview視圖中的樣式化XML;請張貼適配器..... – Shark

+0

是的。更新代碼請檢查...問題謝謝! – TheDevMan

回答

0

嘗試獲取PHOTO_URIPHOTO_THUMBNAIL_URI而不是PHOTO_ID。然後使用適配器將其顯示在ImageView上。

參考:ContactsContract.Contacts

+0

我無法獲取PHOTO_URI,它只是給我PHOTO_ID ...在我試用的查詢中 – TheDevMan

+0

[This question](http://stackoverflow.com/questions/2383580/how-doi-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); 
    }