Android-Universal-Image-Loaderライブラリを使用して、GridViewセルのImageViewにリモートピクチャを読み込みます。Android-Universal-Image-Loaderは読み込まれた画像をグリッドビューのスクロールに保存しません
new ImageLoaderConfiguration.Builder(Config.context)
.threadPriority(Thread.NORM_PRIORITY - 2)
.memoryCacheSize(20 * 1024 * 1024) // 20 Mb
.memoryCache(new LruMemoryCache(20 * 1024 * 1024))
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.tasksProcessingOrder(QueueProcessingType.LIFO)
.enableLogging() // Not necessary in common
.build();
と表示オプション:
new DisplayImageOptions.Builder()
.showStubImage(R.drawable.blank)
.showImageForEmptyUri(R.drawable.no_image)
.build();
問題: GridViewのすべてが正常に動作を開始し、イメージを持つ活動が細胞に表示されたら、その後、 ここimageLoader構成
私はグリッドを下にスクロールし(グリッドには約20個のアイテムがあります)、他のイメージが正しく読み込まれます。 しかし、一度上にスクロールすると、すでにロードされているイメージが再び読み込みを開始します。
いくつかのスクロールした後、上下のグリッドがすべての画像を保存し、もう消えません。
誰かが同様の問題を抱えていたか、私が間違っていたことを知っていましたか? ありがとうございます。
はを追加しました:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder holder;
if (view == null) {
view = Config.context.getLayoutInflater().inflate(R.layout.featured, null);
holder = new ViewHolder();
holder.titleText = (TextView) view.findViewById(R.id.featured_title);
holder.priceText = (TextView) view.findViewById(R.id.featured_price);
holder.image = (ImageView) view.findViewById(R.id.thumbnail_image);
view.setTag(holder);
}
else {
holder = (ViewHolder) view.getTag();
}
HashMap<String, String> listing = listings.get(position);
/* set text values */
holder.titleText.setText(listing.get("title"));
holder.priceText.setText(listing.get("price"));
/* load image to list (AsyncTask) */
Utils.imageLoaderFeatured.displayImage(listing.get("photo"), holder.image, Utils.imageLoaderOptionsFeatured);
return view;
}
PS:ここに は私のアダプタでGetViewメソッドです。この問題を解決するために他のコード(グリッド・アダプター)を見たいのかどうか教えてください。
ジョン
メモリやディスクにはキャッシュを使用しません。表示オプションでキャッシングを有効にしてください。 – NOSTRA
.cacheInMemory()と.cacheOnDisc()のために1.8.5バージョンにライブラリを更新した後に削除しましたが、.cacheInMemory()を使用しても、初めて写真が保持されず、アプリがグリッド内のすべての画像をキャッシュする前に少なくとも4回はダウンする。 –
廃止予定のメソッドのJavaドキュメントを読むべきです。だから、 '.cacheInMemory(true)'と '.cacheOnDisc(true)'を代わりに使うべきであることがわかります。 UILサンプルアプリであなたの問題が見えますか? – NOSTRA