2009-11-10 113 views
1

随着我工作的应用程序,我带来了以下问题。我有一个应该显示来自数据库表的数据的列表视图。有两种情况可能发生:listview适配器实现

  • 场景一 - 数据库表正在动态填充,列表视图也应该动态显示表的信息,例如根据表大小增长。
  • 方案二 - 表已经被填充和列表视图具有只是显示的内容

所以问题是如何使用ListView和ListAdapter来完成此行为。

到目前为止,我已经为每种情况提供了解决方案,但是对于两者来说都没有解决方案。

  • 场景一 - 使用AsyncTask和ArrayAdapter。在doInBackGround中定期查询数据库,并将结果传递给onProgressUpdate,而不是仅使用新添加的值填充ArrayAdapter。但是,当情况两个我查询所有的表,而不是在一个步骤中将所有值复制到ArrayAdapter,这是非常缓慢的。
  • 方案二 - 再次查询db,使用CursorAdapter。但在这种情况下,我无法使用CursorAdapter动态更新ListView。

所以任何想法如何使用一个适配器来实现这个,或者只是应该使用ArrayAdapter和CursorAdapter根据情况?

回答

1

场景之一 - 数据库表 动态填充和列表视图 也应该动态地显示 表的信息e.g取决于表的大小增长 。

尝试:

场景1a:无论是谁获得,不仅把它在数据库中的数据,但告诉活动“这里的一些新的数据,以显示”。

数据库是伟大的数据存储,但是糟糕的管道。您的“方案一”试图将数据库用作管道,而不是管道。

现在,如果情况是,你有中,该数据库的数据新的数据进来,你需要缝合这些数据集在一起。您可以使用我的MergeAdapter:给它两个ListAdapters,一个代表您现有的数据(可能是CursorAdapter),另一个代表新数据(可能是ArrayAdapter)。它将使它们成为一个联合实体。

+0

0投票下载检查 我不想保留两个数据集。实际上只有一个数据集,只是它有两种不同的状态。 因此,任何其他想法 – 2009-11-11 18:36:24