我正在使用Universal Image Loader 1.8.6库来动态加载从网络上获取的图片。
我的ArrayAdapter中的getView方法包含以下代码:
以上代码的第一行只是为了避免在 gridView 中回收视图时,导致将图片设置在错误的位置(直到图片未被下载)。
实际问题是:
如果我打开包含 GridView 的 Activity,由于 UIL 库的帮助,显示的项可以下载图片。(同时,在网格视图的每个视图中都显示no_foto.png 图像)。当所有视图都加载完自己的图像后,如果我尝试向下滚动,然后再返回(向上滚动),我必须等待重新加载图像,因为现在所有视图都被 no_foto.png 图像占据了。
如何避免这些图像的重新加载?使用 Universal Image Loader,我可以缓存之前加载的图像吗?
注意:由于我的网格可能包含许多图像,我希望使用磁盘缓存的实现(而不是内存缓存)。我发现 .discCacheFileCount() 可以用于设置缓存文件的最大数量,那么为什么我的文件似乎没有被缓存呢?
ImageLoaderConfiguration
配置如下:ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
.memoryCacheExtraOptions(480, 800) // default = device screen dimensions
.threadPoolSize(3) // default
.threadPriority(Thread.NORM_PRIORITY - 1) // default
.denyCacheImageMultipleSizesInMemory()
.memoryCacheSize(2 * 1024 * 1024)
.memoryCacheSizePercentage(13) // default
.discCacheSize(50 * 1024 * 1024)
.discCacheFileCount(100)
.imageDownloader(new BaseImageDownloader(getApplicationContext())) // default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
.writeDebugLogs()
.build();
并且DisplayImageOptions
配置如下:
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.no_foto)
.showImageForEmptyUri(R.drawable.no_foto)
.showImageOnFail(R.drawable.no_foto)
.build();
我的ArrayAdapter中的getView方法包含以下代码:
iv.setImageResource(R.drawable.no_foto);
imageLoader.displayImage(basePath+immagine, iv);
以上代码的第一行只是为了避免在 gridView 中回收视图时,导致将图片设置在错误的位置(直到图片未被下载)。
实际问题是:
如果我打开包含 GridView 的 Activity,由于 UIL 库的帮助,显示的项可以下载图片。(同时,在网格视图的每个视图中都显示no_foto.png 图像)。当所有视图都加载完自己的图像后,如果我尝试向下滚动,然后再返回(向上滚动),我必须等待重新加载图像,因为现在所有视图都被 no_foto.png 图像占据了。
如何避免这些图像的重新加载?使用 Universal Image Loader,我可以缓存之前加载的图像吗?
注意:由于我的网格可能包含许多图像,我希望使用磁盘缓存的实现(而不是内存缓存)。我发现 .discCacheFileCount() 可以用于设置缓存文件的最大数量,那么为什么我的文件似乎没有被缓存呢?