0

我正在使用 ViewPager 构建画廊。每次下载照片时,我都会立即将其缓存在mMemoryCache其中

mMemoryCache = new LruCache<Integer, Bitmap>(cacheSize) {
        @Override
        protected int sizeOf(Integer key, Bitmap bitmap) {
            // The cache size will be measured in bytes rather than number
            // of items.
            return (bitmap.getRowBytes() * bitmap.getHeight());
        }
    };

如您所见sizeOf(),如果使用了字节,则返回数字,这是有道理的。我的问题是我的 ViewPager 的适配器需要知道我有多少页,这将是我的缓存中的对象数。

关于我该怎么做的任何想法?谢谢!

4

1 回答 1

1

我认为你应该重新考虑你的方法。通常,当您使用某种分页(我的意思是数据分页,而不是 ViewPager)时,您首先会向您的适配器添加一定数量的项目。您可以立即开始下载所需的资源,或者等到您真正需要它们。检查Adapter.onCreateView()资源是否已下载并缓存。如果是,从那里获取它,如果不是,则开始异步下载并在获得图像后立即将其添加到视图中。同时显示一个占位符。

当您到达适配器中的最后一个项目时,向其中添加另一个批次,一切重新开始。

如果您真的想知道 LRUCache 中有哪些项目,请覆盖put()entryRemoved(). 在那里,您知道从缓存中添加或逐出哪些项目。不过,我建议不要使用这种方法。

于 2013-11-27T23:30:54.833 回答