我有一个应用程序可以在后台线程中下载一堆图像。随着每个图标的下载,我将其添加到自定义适配器中的一个 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 有一个新的位图图像?