如何删除ListView中的已检查项目

时间:2011-02-19 22:41:28

标签: android listview button checkbox

我想要一个Button点击后,删除ListView中所有选中的项目。我已经设置了所有的xml项目,我只是不知道如何编写java代码。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

尝试将代码重构为较小的可抓取部分。从extracting some methods开始,为部分大型方法提供可理解的名称。

问题是数据库中可能有数百行,只有足够的视图来填充屏幕。没有任何地方重新记录检查的内容,因此无法删除它们。您可能需要扩展BaseAdapter或SimpleCursorAdapter以保持行的状态(已检查或未检查)。阅读优秀的android documentation

我的观点是,视图,您的CheckBox和包含要显示的数据的模型之间存在区别。所以请查看Model-View-Controller。你现在可以忽略控制器的概念。