У меня есть приложение, которое загружает кучу изображений в фоновом потоке. По мере загрузки каждого значка я добавляю его в список ArrayList в своем пользовательском адаптере, который является подклассом BaseAdapter. Каждая строка в ListView, которая использует BaseAdapter, имеет 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 есть новое растровое изображение?