【发布时间】:2011-06-30 13:18:20
【问题描述】:
我想要一个Button,点击它会删除ListView 中所有选中的项目。我已经把所有的xml项都设置好了,只是不知道怎么写java代码。
【问题讨论】:
标签: android listview button checkbox
我想要一个Button,点击它会删除ListView 中所有选中的项目。我已经把所有的xml项都设置好了,只是不知道怎么写java代码。
【问题讨论】:
标签: android listview button checkbox
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。
我的意思是 view、CheckBox 和包含要显示的数据的 model 之间存在区别。所以请查看Model-View-Controller。你现在可以忽略控制器的概念。
【讨论】:
SimpleCursorAdapter 怎么样?一样的吗?
SimpleCursorAdapter,搜索仍在继续 - 底层Cursor 需要更新。
CheckBox。
isChecked() 方法。