我正在制作一个适配器,它强调来自Web服务的数据加载,每次用户向下滚动时,它都会加载更多数据并将其添加到该适配器后面的ArrayList。数据包含图像URL,然后我在我的getView方法中延迟加载。
我使用片段显示该列表?
答案 0 :(得分:2)
我会尝试逐一回答所有三个问题。
有没有更好的解决方案? (除了延迟加载)
这取决于。关于延迟加载的好处是,当您显示组件时,您不需要在开始时拥有所有数据。问题通常是,如何在需要时获取新数据。
因此,当从网络加载新数据时,实际上是加载数据的块数有多大的问题。我不会在下一个之后加载一个新条目,但加载例如当列表结束时,有20个新的。
当然,对于一个数字来说,这只是一个随意的想法,你需要找到速度和可用性之间的完美点。
因此,当您从Web服务加载大量数据时,这些数据传输速度足够快,这真的是一个很酷的概念。但是如果你只是一个接一个地读一个条目(因此,用户几乎总是等待新数据),这真的很烦人。
如何正确缓存图片?
有多种可能的解决方案,其中一些是:
您可能也喜欢this question的内容(以及它已接受的答案),为您提供有关内存管理的一般建议。
我可以在用户旋转设备时保留适配器的数据吗?
旧,已弃用 anser:
是的,您可以使用Activity的“实例状态”来执行此操作。 基本上,来自Activity的onSaveInstanceState()
-method 允许您使用状态信息填充给定的Bundle
然后传递给onCreate()
-method。
您在Bundle
中保存的数据将是(例如) 列表的当前位置或甚至列表本身(取决于 在大小上。)
是的,请使用Loaders API。它也可以在兼容性库中找到。