gpt4 book ai didi

android - 将数据从网络服务加载到 ListView 的最佳方式

转载 作者:行者123 更新时间:2023-11-29 00:39:53 24 4
gpt4 key购买 nike

我正在制作一个适配器,它强调从 Web 服务加载的数据,每次用户向下滚动时,它都会加载更多数据并将其添加到该适配器后面的 ArrayList 中。数据包含图像 URL,然后我将其延迟加载到我的 getView 方法中。

  • 有更好的解决方案吗?
  • 以及如何正确缓存这些图像?
  • 我可以在用户旋转设备时保留适配器的数据吗?所以不需要从头重新加载它们?

我使用 fragment 来显示该列表?

最佳答案

我将尝试一一回答这三个问题。

是否有更好的解决方案? (除了延迟加载)

这取决于。延迟加载的好处在于,您不需要在显示组件时一开始就拥有所有数据。问题通常是如何根据需要获取新数据。

因此,当从网络加载新数据时,真正的问题是加载的数据 block 有多大。我不会在下一个条目之后加载一个新条目,而是加载例如20 个新的,当到达列表末尾时。

当然,这只是一个随机的数字想法,您需要根据您的情况找到速度和可用性之间的完美点。

因此,当您从 Web 服务加载数据 block 时,这些数据的传输速度足够快,这确实是一个很酷的概念。但是,如果您只是一个接一个地阅读条目(因此,用户几乎总是在等待新数据),这真的很烦人。

以及如何正确缓存图片?

有多种可能的解决方案,其中一些是:

  • Using the system-cache ,就像浏览器(似乎是最好的)。
  • 实现您自己的使用设备存储的系统(例如SD 卡或内部应用程序存储(第一个是首选))。

您可能还喜欢 this question 的内容(这是公认的答案),为您提供一些有关内存管理的一般建议。

我可以在用户旋转设备时保留适配器的数据吗?

旧的,已弃用 anser:

Yes, you can use the "instance state" of the Activity to do this. Basically, the onSaveInstanceState()-method from the Activity allows you to populate a given Bundle with state-information, which is then passed to the onCreate()-method.

The data you would save in the Bundle would be (for example) the current position of the list or maybe even the list itself (depending on the size).

是的,使用 Loaders API .它也可以在兼容性库中找到。

关于android - 将数据从网络服务加载到 ListView 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10097679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com