Android:如何清除列表视图而不从数组列表中删除数据?

时间:2014-07-01 16:09:23

标签: java android

我正在尝试创建一个列表视图,该视图根据微调器的选择显示不同的数据。

我的列表视图是通过一个工作正常的基础适配器实现的。

我的数据存储在一个对象的数组列表中,每个对象都包含存储单个数据的字段,并根据微调器的选择过滤存储在数组列表中的数据,并将其显示在列表视图中。

但我的问题是如何清除列表视图内容而不清除其基础数据(存储在数组列表中)并调用notifyDataSetChanged?我希望能够保存存储的数据,因此如果用户返回到先前的选择,则数据仍然存在。

感谢您抽出宝贵时间阅读本文。

3 个答案:

答案 0 :(得分:3)

当您的数据存储到ArrayList时,您只需使用:

listView.setAdapter(null);

它将删除ListView的适配器,因此,删除所有显示的项目。

数据仍会显示在ArrayList中,因此,如果您想重新显示此ListView,则只需重新创建Adapter并重新设置即可。您甚至可以创建BaseAdapter的全局实例,这样您只需创建一次。

答案 1 :(得分:2)

创建适配器列表,每个选择一个适配器。然后,当使用listView.setAdapter(adapter)

更改选择时,只需切换到其他适配器

答案 2 :(得分:2)

您可以将另一个ArrayList传递给适配器,并在ListView中显示新数据。

或者,您可以在适配器中创建两个ArrayList,一个名为original,其中包含ListView的原始元素,另一个currentElements将显示更改为的真实ArrayList你要。使用一些自定义方法,您可以选择在ArrayList的两个版本之间切换。

它可能与实现过滤器的适配器的概念相同。

无论如何,如果我理解你的问题,你想根据选择改变ListView的内容。好吧,在这种情况下,我会发送另一个ArrayList来显示。