電話帳から特定の連絡先を表示する ListView があります。このhttps://stackoverflow.com/a/10235381/1809507を Cache クラスとして使用し、AsyncTask を使用します。
連絡先に写真がない場合は、デフォルトの写真を使用します。XML内にデフォルトのものを設定しました。次の方法を使用して連絡先の写真が存在する場合にのみ設定し、リストビューをスクロールすると、写真のない連絡先が他の連絡先の写真を取得し始めます。retrieveContactPhoto メソッドからデフォルトの写真を null ではなくビットマップとして取得し、imageview に割り当てると、うまく機能しますが、同じデフォルトの写真を複数回キャッシュするため、写真のない連絡先が多数ある場合、これは良い解決策ではないと思います。それとも私が間違っていますか?
@Override
protected Bitmap doInBackground(Void... args)
{
Bitmap bm = HelpClasses.retrieveContactPhoto(contextInput, HelpClasses.fetchContactIdFromPhoneNumber(contextInput, phoneNumber));
if(bm != null)
{
synchronized (cache)
{
cache.put(phoneNumber, bm);
}
}
return bm;
}
@Override
protected void onPostExecute(Bitmap result)
{
if(mView != null && result != null)
{
mView.setImageBitmap(result);
}
}