我正在尝试为我的 android 应用程序添加图像的 GridView (ImageView)。我已经成功地实现了图像的延迟加载和缓存,当我有一个简单的 GridView 时,我所有的高质量图像都可以完美地工作。但是,当我尝试将 GridView 嵌套在 ListView 中时,就会出现问题。
当我只有一个 GridView 时,应用程序只需要保持对当前正在屏幕上呈现的图像的引用。但是,当我在 ListView 中嵌套一个包含 100 个高分辨率图像的 GridView 时,应用程序会尝试保留对所有 100 个图像的引用,而当时只有 20 个图像在屏幕上呈现。我通过我的日志输出发现了这一点,每次“读取”图像时应用程序都会打印一条消息。我会看到该应用程序读取了屏幕上显示的 20 张图像,但随后它会继续读取更多图像。当它达到大约 100 张图像时,应用程序将耗尽内存并崩溃。当我只有 GridView 时,不会发生这种行为;该应用程序将仅读取 20 张图像,并在我滚动屏幕时加载更多图像。
如何使我的 ListView 不会尝试加载子视图中的所有元素(尤其是未显示在屏幕上的元素)?
谢谢!
编辑:对于那些想知道为什么我想要在 ListView 中使用 GridView 的人,这是因为我正在尝试创建这样的东西:
除了我想把它放在 ListView 中,而不是 ExpandableListView。