ベース アダプターと LruCache を使用して、すべての連絡先画像を含むリスト ビューを実装しようとしています。しかし、画面上の長いスクロールでは、実際の画像を設定する前にすべての画像(そのビューに対応する)が表示されます。
例: 1 ページあたり 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);
}
この問題を解決する方法。ありがとう