バックグラウンドスレッドで大量の画像をダウンロードするアプリがあります。各アイコンがダウンロードされると、BaseAdapterをサブクラス化するカスタムアダプターのArrayListに追加します。BaseAdapterを使用するListViewの各行には、ImageViewがあります。getViewでは、次のことを行います。
public View getView(int position, View convertView, ViewGroup parent) {
    final MyCustomImageClass imageObject = data.get(position);
    View vi = convertView;
    if(convertView==null) {
        vi = inflater.inflate(R.layout.list_row, null);
    }
    ImageView thumbnail = (ImageView)vi.findViewById(R.id.list_image);
    File appDir = new File(Utils.getAppFilesDir() +"");
    File imageFolder = new File(appDir, imageObject.getImageFolderName());
    File imageDir = new File(imageFolder, imageObject.getIconFilename());
    Log.e("myapp", "row image dir: " + imageDir.toString());
    if(imageDir.exists()) {
        Bitmap imageBitmap = BitmapFactory.decodeFile(imageDir.toString());
        thumbnail.setImageBitmap(imageBitmap);
    }
    thumbnail.invalidate();
}
しかし、私が見ているのは、thumbnail古い画像を再利用しているということです。同様に、logcatで別のパスが表示されていても、最初の数行は同じサムネイル画像になります。
ListViewの行に、そのImageViewに新しいビットマップイメージがあることを通知するにはどうすればよいですか?