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

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

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

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

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

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

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

【问题讨论】:

    标签: android


    【解决方案1】:

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

    试试:

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

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

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

    【讨论】:

    • 0 投反对票检查我不想保留两个数据集。实际上只有一个数据集,它有两种不同的状态。所以任何其他想法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多