我正在尝试创建一个列表视图,该视图根据微调器的选择显示不同的数据。
我的列表视图是通过一个工作正常的基础适配器实现的。
我的数据存储在一个对象的数组列表中,每个对象都包含存储单个数据的字段,并根据微调器的选择过滤存储在数组列表中的数据,并将其显示在列表视图中。
但我的问题是如何清除列表视图内容而不清除其基础数据(存储在数组列表中)并调用notifyDataSetChanged?我希望能够保存存储的数据,因此如果用户返回到先前的选择,则数据仍然存在。
感谢您抽出宝贵时间阅读本文。
答案 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来显示。