サムネイル付きのニュース記事があるAndroidアプリケーションを作成しています。これらのサムネイルはネットワークからロードされ、URL をキー、ビットマップを値として LruCache に保存されます。
private LruCache<String, Bitmap> tCache;
アダプタの getView() メソッドで getThumbnail() を呼び出し、キャッシュをチェックし (必要に応じてネットワークからロード)、サムネイルを表示します。
public void populateList(){
...
new Thread(new Runnable() {
@Override
public void run() {
getThumbnail(story, thumbnail);
}
}).start();
}
と
private Bitmap getThumbnail(Story story, ImageView imageView) {
String url = story.getThumbnail();
Bitmap bitmap;
synchronized (tCache) {
bitmap = tCache.get(url);
if (bitmap == null) {
bitmap = new ImageLoadingUtils(this, imageView).execute(url,
Boolean.TRUE).get();
tCache.put(url, bitmap);
}
}
return bitmap;
}
ImageLoadingUtils はネットワークからロードし、完了したら結果のビットマップを ImageView に配置します。
@Override
protected void onPostExecute(Bitmap result) {
if (imageView != null) {
imageView.setImageBitmap(result);
adapter.notifyDataSetChanged();
}
}
問題は、下にスクロールすると同じ ListView でサムネイルが繰り返されることです。
________ |画像1| |画像2| |画像3| 画面 |画像4| -------- |画像1| |画像2| オフスクリーン ________
また、下にスクロールしてから上に戻ると、記事に正しいサムネイルが表示されなくなりました。とてもめちゃくちゃです。
誰でも問題を見つけることができますか? 本当にありがとうございました。