Я пытаюсь реализовать представление списка со всеми изображениями контактов с помощью базового адаптера и LruCache. Но при длинной прокрутке на экране все изображения (соответствующие этому представлению) отображаются до установки фактического изображения.
например: просмотр списка с 5 элементами на странице, если мы прокрутили от первого контакта до 60-го, при первом просмотре списка изображений 1,6,11,16,21..51 отображаются на несколько миллисекунд перед 55-м изображением Показано
Основные коды
//Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = (ImageView) convertView;
if(imageView == null){
imageView = new ImageView(getActivity());
}
int id = contactId[position];
final String imageKey = String.valueOf(contactId);
final Bitmap bitmap = cache.get(imageKey);
if (bitmap != null) {
imageView.setImageBitmap(bitmap);
} else {
Resources res = context.getResources();
BitmapManager bm = new BitmapManager(imageView, res, cache);
bm.setContext(getActivity());
bm.execute(id);
}
return imageView;
}
Код BitmapManager после выполнения
@Override
protected void onPostExecute(Bitmap bitmap) {
// TODO Auto-generated method stub
try{
if(isCancelled()){
bitmap = null;
}
if(imageViewReference != null && bitmap != null){
ImageView imageView = imageViewReference.get();
imageView.setImageBitmap(bitmap);
cache.put(String.valueOf(res), bitmap);
if(imageView != null){
imageView.setImageBitmap(bitmap);
}
}
}catch(Exception e){
}
super.onPostExecute(bitmap);
}
Как решить эту проблему. Спасибо