列表视图适配器实现

Posted

技术标签:

【中文标题】列表视图适配器实现【英文标题】:listview adapter implementation 【发布时间】:2010-12-15 04:14:59 【问题描述】:

对于我正在开发的应用程序,我遇到了以下问题。我有一个列表视图,它应该显示来自数据库表的数据。可能会发生两种情况:

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

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

到目前为止,我对每种情况都有解决方案,但两者都没有。

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

那么任何想法如何使用一个适配器来实现这一点,或者我应该根据情况使用 ArrayAdapter 和 CursorAdapter 吗?

【问题讨论】:

【参考方案1】:

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

试试:

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

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

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

【讨论】:

0 投反对票检查我不想保留两个数据集。实际上只有一个数据集,它有两种不同的状态。所以任何其他想法

以上是关于列表视图适配器实现的主要内容,如果未能解决你的问题,请参考以下文章

如何在列表视图中实现列表视图?

带有光标适配器滚动问题的android列表视图

列表视图--ListView相关类及其适配器

如何将最新数据附加到android中的自定义基本适配器列表视图?

如何为列表视图创建自定义光标适配器以用于图像和文本?

如何在适配器类中的列表视图项上获取动画?