我正在尝试在基本适配器和 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);
}
如何解决这个问题呢。谢谢