私の Android アプリケーションには、車の画像を表示するギャラリーウィジェットがあります (実際には車ではありませんが、例として車が機能します)。ギャラリーには、ギャラリー内のアイテムごとに 1 つのモデルの車が表示されるため、次のようなギャラリーがあるとします。
- フォード モデル T
- ポルシェ911
- フォード・マスタング
ユーザーがギャラリー内のアイテムを長押しすると、問題の車の新しい画像を選択できます。つまり、ユーザーがフォード マスタングの画像を長押しすると、フォード マスタングの写真の新しいギャラリーが表示されます。メイン ギャラリーで実際に見たい画像を選択します (黄色の画像ではなく、赤色の画像を表示したい場合があります)。
これはコードでうまく機能しています — 私は単に int の配列を持っています。この配列には車のモデルごとに 1 つの int があり、各 int は画像のインデックスを表しています。
ユーザーが新しい画像を選択すると、ログに次のように表示されます。
MoreCarImagesGallery: ユーザーが選択した ID 219 の車の画像 3 (Ford Mustang) MainGalleryAdapter: 選択した画像 (3) を車の位置 2 に設定
次に、アダプターgetView() は次のことを行います。
Image img = imageLookup.getImageForCar(car.id, selectedImageIndexes[position]);
でも!メイン ギャラリーに戻ると、問題の車の以前に表示された画像がまだ表示されています。しかし!表示されている車から左または右にいくつかのアイテムをスクロールしてから、その車に戻ると、画像が「新しい」(ユーザーが選択した) 画像に更新されます。
明らかに、ギャラリーはアダプターからの画像のキャッシュを行っています。キャッシングを行わないと、低速の携帯電話ではギャラリーが非常に遅くなると思うので、おそらくそれが起こり続けることを望んでいます.
アダプタ getView() が「新しい」画像を返すように強制するために、ギャラリー内の画像を無効にするにはどうすればよいですか?