0

電話帳から特定の連絡先を表示する 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);
    }
}
4

1 に答える 1