【问题标题】:How to delete checked items in a ListView如何删除 ListView 中的选中项
【发布时间】:2011-06-30 13:18:20
【问题描述】:

我想要一个Button,点击它会删除ListView 中所有选中的项目。我已经把所有的xml项都设置好了,只是不知道怎么写java代码。

【问题讨论】:

    标签: android listview button checkbox


    【解决方案1】:

    ListView 显示来自Adapter 的数据。为了从视图中删除项目,需要从Adapter 中删除项目并通知视图。在 android 中,Adapter 通过调用notifyDataSetChanged() 来通知视图。

    如何从适配器中删除项目取决于您的特定适配器。 SimpleCursorAdapter 从底层 Cursor 获取数据。要删除项目,应从基础Cursor 中删除该项目。例如使用SQLiteCursor 需要删除数据库中的一行。

    如果您使用ArrayAdapter,只需在适配器上调用remove(T object)。它会自动为您拨打notifyDataSetChanged()

    更新: 我在 git hub 看到了代码。以下是一些关于如何让您的应用尽快运行的提示。

    尝试将您的代码重构为更小的可掌握部分。从extracting some methods 开始,为大型方法的某些部分提供可理解的名称。

    问题是数据库中可能有数百行并且只有足够的视图来填满屏幕。没有地方记住检查了 rows 的内容,因此无法删除它们。您可能需要扩展 BaseAdapter 或 SimpleCursorAdapter 来保存行的状态(选中与否)。阅读优秀的 android documentation

    我的意思是 viewCheckBox 和包含要显示的数据的 model 之间存在区别。所以请查看Model-View-Controller。你现在可以忽略控制器的概念。

    【讨论】:

    • SimpleCursorAdapter 怎么样?一样的吗?
    • 更新了答案。对于SimpleCursorAdapter,搜索仍在继续 - 底层Cursor 需要更新。
    • 我知道我们要去哪里,但我需要删除我的所有项目并勾选 CheckBox
    • 好吧,我明白了。那么视图如何知道是否勾选复选框呢?显然,这些信息存储在某处。请编辑问题,以便我们了解如何迭代信息。
    • 不知道怎么查,看有没有勾选。我可以试试isChecked() 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 2022-01-27
    • 2015-07-12
    • 1970-01-01
    • 2014-02-11
    相关资源
    最近更新 更多