1

今天我在思考 Android 框架是如何工作的,但我不确定一件事 - 开发人员(我)应该如何编写列表以显示来自少数来源的自定义数据。我创建了一些应用程序,但对我来说保持应用程序的干净和快速对我来说很重要。

所以 - 我有一个应用程序,例如新闻阅读器。我使用 Fragments、ListFragments、列表项的自定义布局和 BaseAdapter 来显示许多列表和活动中的数据。这里没有什么新鲜事,也没有什么特别的。起初我将所有数据从网络服务器下载到应用程序中的 sqlite,所以我确定它的速度和稳定性。然后接下来呢?

我应该从 Java 列表(列表项)创建列表项,然后将其传递给 baseadapter,还是我应该只使用 SQLite Cursor->list 项的方式?刷新列表、添加新项目和删除它们有什么更好的方法?请记住,我的 ListFragment 和 baseadapter 在单独的类中。

我不确定,所以我显然不知道我应该如何刷新并将新项目加载到我的列表中。我只想保持应用程序干净,没有很多 3rd 方库(所以我不关心 EndlessList 或类似的东西)。

tl;博士

当我使用少数来源显示数据时,我应该如何为速度目的创建列表?

4

1 回答 1

1

我不确定我是否理解您的全部问题,但关于适配器使用哪个数据源的部分,这是我的想法:

我认为这取决于您正在处理的数据量。如果它足够小,您可以将所有内容保存在内存中的 List 中,但您还需要确保数据不会随时间增长。

不幸的是,使用游标作为数据源也不是解决可能的“内存不足”异常问题的安全选择。每个查询都有一个限制,因为游标的实现显然会将整个结果集加载到内存中。

因此,如果您正在处理大量数据或可能随时间增长的数据(如消息、用户创建的项目),您需要有一个适配器在内部与数据窗口一起工作,该数据窗口将固定数量的项目加载到内存中一次。该窗口始终在内存中保留一堆项目,这些项目当前可以通过 ListView(通过上下滚动)查看和快速访问。

假设该窗口包含例如 200 个项目。当达到该窗口的上限/下限时,适配器需要加载下一个相邻窗口。您可以在 GMail 应用程序中观察到这种行为(“正在加载对话......”)。

我会让该数据位于光标中,而不是先将其传输到列表中,因为您可以像使用列表一样使用光标。

于 2012-07-16T23:17:39.487 回答