列表视图适配器实现
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 投反对票检查我不想保留两个数据集。实际上只有一个数据集,它有两种不同的状态。所以任何其他想法以上是关于列表视图适配器实现的主要内容,如果未能解决你的问题,请参考以下文章