listview适配器实现

时间:2009-11-10 18:39:33

标签: android

使用我正在处理的应用程序,我遇到了以下问题。我有一个listview应该显示数据库表中的数据。有两种情况可能发生:

  • 方案一 - 数据库表动态填充,listview也应动态显示表的信息,例如根据表大小增长。
  • 场景二 - 表格已经填写,列表视图必须只显示内容

所以问题是如何使用ListView和ListAdapter来实现这种行为。

到目前为止,我已经为每个场景提供了解决方案,但两者并没有。

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

所以任何想法如何使用一个适配器实现它,或者我应该根据具体情况使用ArrayAdapter和CursorAdapter?

1 个答案:

答案 0 :(得分:1)

  

场景一 - 数据库表是   动态填充和列表视图   也应该动态显示   表的信息,例如成长   取决于桌子大小。

尝试:

场景1a:获取数据的人不仅将数据放入数据库,还告诉活动“这里有一些要显示的新数据”。

数据库是很棒的数据存储,但是很糟糕。您的“场景一”尝试将数据库用作管道 - 而是围绕它管道。

现在,如果情况是两个数据库中的数据都有新数据进入,那么您需要将这些数据集拼接在一起。您可以使用我的MergeAdapter:给它两个ListAdapters,一个代表现有数据(可能是CursorAdapter),另一个代表新数据(可能是ArrayAdapter) 。它将它们作为一个组合实体呈现。