0

我的 Android 应用程序中有一个画廊小部件,显示汽车的图像(它不是真正的汽车,但汽车作为示例)。画廊在画廊中为每个项目显示一个汽车模型,所以我们可能有一个类似的画廊:

  1. 福特 T 型车
  2. 保时捷 911
  3. 福特野马

当用户长按图库中的一个项目时,他们可以为相关汽车选择一个新图像——因此,如果用户长按福特野马图像,他们会看到一个新的福特野马图片库,他们可以选择他们真正想在主画廊中看到的图像(也许他们想看到红色而不是黄色)。

这在代码中工作得很好——我只有一个整数数组,其中每个汽车模型的数组中有一个整数,每个整数代表图像的索引。

用户选择一个新图像,然后日志显示:

MoreCarImagesGallery:用户为 ID 为 219(福特野马)的汽车选择了图像 3
MainGalleryAdapter:为位置 2 的汽车设置选定图像 (3)

适配器getView() 然后执行:

Image img = imageLookup.getImageForCar(car.id, selectedImageIndexes[position]);

然而!当我回到主画廊时,之前显示的有关汽车的图像仍在显示。但!当我从显示的汽车向左或向右滚动一些项目,然后滚动回该汽车时,图像会更新为“新”(用户选择的)图像。

所以很明显画廊正在对我的适配器中的图像进行一些缓存。我可能希望这种情况继续发生,因为我认为如果没有缓存,画廊在速度较慢的手机上会非常滞后。

如何使我的画廊中的图像无效以强制我的适配器 getView() 返回“新”图像?

4

1 回答 1

1

假设您实际上已经更新了图库适配器背后的数据,您可以在更改数据后在主图库的适配器上调用 notifyDatasetChanged()。

http://developer.android.com/reference/android/widget/BaseAdapter.html#notifyDataSetChanged ()

于 2013-01-24T23:34:03.133 回答