我有一个主要活动生成列表的应用程序,在主要活动中有许多选项卡可以过滤列表,并在带有复选框的自定义ListView中列出整个列表的子集。
我在每个选项卡中都有适配器,并且在各种onCreate()中运行了线程,这些线程过滤主列表并将相关子集添加到其自己的适配器中。每当用户选中一个框时,我都会将复选框状态保存到SharedPreferences中。
我在同步各种ListActivities中的复选框时遇到问题。当我检查1个ListActivity中的一个框并切换到另一个选项卡时,它不会在那里更新。只有当我退出应用程序并重新启动它时,主活动才会重新生成列表,阅读SharedPreferences并更新所有复选框。
如何立即完成此操作,以便各种标签的各种ListActivities始终同步?
感谢。
答案 0 :(得分:0)
我建议你在适配器上使用过滤器(即实现自己的过滤器,从复选框选择中读取)。拥有这么多线程是:a)让程序员感到困惑; b)同步问题的来源。每个ArrayAdapter都实现Filterable接口,您可以覆盖方法getFilter()以返回您自己的过滤器。在此过滤器中,您可以根据需要过滤掉元素。我认为这篇文章可以帮助你:How to write a custom filter for ListView with ArrayAdapter。您可能需要阅读您实施的每个过滤器中的设置。