ここAndroid Smooth Scrolling の指示に従ってスムーズなスクロールを実現していますが、onPostExecute のメソッド setImageBitmap はまだリストビューをフリーズしています。ここで非同期タスクのコード
private static class ThumbnailTask extends AsyncTask<Integer, Void, Bitmap> {
private final WeakReference<ImageView> imageViewReference;
public ThumbnailTask(ImageView imageView) {
imageViewReference = new WeakReference<ImageView>(imageView);
}
@Override
protected Bitmap doInBackground(Integer... params) {
Bitmap image = fragment.getAlbum().getPhotos().get(params[0]).getImage(Utils.THUMBNAIL_SCREEN_SIZE);
return ThumbnailUtils.extractThumbnail(image, 40, 40);
}
@Override
protected void onPostExecute(Bitmap bitmap) {
if (isCancelled()) {
bitmap = null;
}
if (imageViewReference != null) {
ImageView imageView = imageViewReference.get();
if (imageView != null) {
imageView.setImageBitmap(bitmap);
}
}
}
}
そして、これが getView メソッドでの使用方法です
new ThumbnailTask(holder.image).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, position);
長いプロセスは doInBackground メソッドからの「getImage」であり、onPostExecute の ImageView に画像を配置しているだけです。setImageBitmap にコメントを付けると、スクロールが再びスムーズになります。私が間違っていることは何ですか?