使用SQLite和Server Data填充ListVIew

时间:2011-08-03 06:49:58

标签: android database sqlite listview loader

我正在开发一个允许用户发送和接收消息的应用程序。消息存储在服务器上的数据库中。我想在ListView中显示消息,类似于电子邮件收件箱。这是我计划的实施:

  • 在启动消息活动时,使用设备上存储的CursorLoaderSQLite消息缓存填充列表(例如,从上周开始)
  • 从服务器下载新邮件并将其添加到SQLite数据库,然后更新Cursor
  • 在用户滚动时下载较旧的消息(但不存储它们),并确保加载了足够的消息,滚动不会滞后。

以下是我的问题:

  1. 这看起来一般都是一个好策略吗?
  2. 当我下载并存储新邮件时,有没有办法更新Cursor,以便其数据与SQLite数据库同步?
  3. 当我下载旧邮件时,我是否可以将其添加到Cursor,以便我可以CursorAdapter处理ListView

2 个答案:

答案 0 :(得分:1)

是的,这听起来像是一个好策略。这里的关键点是将两个数据源(SQLite和服务器数据)包装成单个源并从中获取数据。

  1. 是的,听起来像是一个好策略。
  2. 修改基础数据集时,应调用notifyDataSetChanged,这将强制适配器重新获取其数据。
  3. 正如我所说,这里的关键是拥有单一数据源结构,适配器将从中获取数据。这里最好的解决方案是使用临时表。基本上临时表仅存在于与数据库的单个连接的生命周期中,因此当您关闭连接时,表将自动删除。当您打开数据库时创建临时表并在其中插入所有消息。下载新消息时,将它们插入真实表和临时表中,但是当您下载旧消息时,只能在临时表中插入它们。最后只使用临时表来获取数据。

答案 1 :(得分:0)

我不确定更新光标是什么意思。

这是我的两分钱。

创建一个更新数据库的服务/线程。 因为您说类似于邮件,这可以帮助您在通知区域中收到新邮件时通知使用。

然后每次用户从数据库开始活动查询。

您可以使用时间戳或messageId来避免冲突。