android - 将新数据加载到 android 列表 - 它应该如何(从 1.5 到 4.1)

标签 android

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

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

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

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

tl;dr

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

最佳答案

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

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

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

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

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

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

关于android - 将新数据加载到 android 列表 - 它应该如何(从 1.5 到 4.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11513074/

相关文章:

android - 用于在送货地址中添加当前位置的 Google map API

android - 找不到启动器图标 Xamarin Android

android - 如何制作按钮开/关音乐android

android - CustomScope 可能不会引用具有不同范围的绑定(bind)

java - Android,使用 Retrofit 填充无尽 ListView 数据的最佳方法?

java - 如何添加新 child 而不覆盖其他 child

android - 指定 android Assets 子文件夹的路径

android - 如何动态更新小部件(不等待 30 分钟调用 onUpdate)?

android - 单击通知以打开我的 Activity 时的 firebase 消息传递

android - 如何将预建的 Android SQLite 数据库移动到内存?