我的Android应用程序中有一个gallery小部件,显示汽车的图像(它不是真正的汽车,但汽车就是一个例子)。画廊在画廊中展示了每个项目的汽车模型,因此我们可能会有一个类似的画廊:
当用户长时间按下画廊中的某个项目时,他们可以为相关汽车选择一个新图像 - 因此,如果用户长时间按下Ford Mustang图像,他们会看到一个新的Ford Mustangs图片库,并且他们可以选择他们实际想要在主画廊中看到的图像(也许他们希望看到红色而不是黄色的图像)。
这在代码中工作得很好 - 我只有一个整数数组,其中每个汽车模型的数组中都有一个int,每个int代表一个图像的索引。
用户选择新图像,然后日志显示:
MoreCarImagesGallery: User selected image 3 for car with ID 219 (Ford Mustang) MainGalleryAdapter: Setting selected image (3) for car at position 2
然后adapter getView()执行:
Image img = imageLookup.getImageForCar(car.id, selectedImageIndexes[position]);
然而!当我回到主画廊时,之前显示的汽车图像仍在显示。但!当我向显示的汽车向左或向右滚动几个项目,然后滚动回到该汽车时,图像将更新为“新”(用户选择的)图像。
很明显,画廊正在对我的适配器进行一些图像缓存。我可能希望这种情况继续发生,因为我认为画廊在没有缓存的慢速手机上会非常迟钝。
如何使我的图库中的图像无效以强制我的适配器getView()返回“新”图像?
答案 0 :(得分:1)
假设您实际更新了库适配器后面的数据,可以在更改数据后调用主库的适配器上的notifyDatasetChanged()。
http://developer.android.com/reference/android/widget/BaseAdapter.html#notifyDataSetChanged()