我有一个ListView,显示电话簿中的某些联系人。我将此https://stackoverflow.com/a/10235381/1809507用作Cache类并使用AsyncTask。
当联系人没有照片时我会使用默认照片。我在XML中设置了默认值。当我使用以下方法设置联系人照片时,如果它存在,我滚动列表视图,那些没有照片的联系人开始获取其他联系人照片。如果我从retrieveContactPhoto方法得到默认照片作为Bitmap而不是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);
}
}
答案 0 :(得分:0)
我认为您正在寻找此库:https://github.com/nostra13/Android-Universal-Image-Loader
或者,你可能想要一个更“谷歌”的人:https://code.google.com/p/libs-for-android/wiki/ImageLoader
您可以将所有图像绑定,抓取和缓存内容留给库。