Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 筛选不同活动中的列表_Java_Android - Fatal编程技术网

Java 筛选不同活动中的列表

Java 筛选不同活动中的列表,java,android,Java,Android,我有一个应用程序,其中一个主活动生成一个列表,在主活动中有许多选项卡,用于过滤列表,并在带有复选框的自定义ListView中列出整个列表的子集 我在每个选项卡中都有适配器,在各种onCreate()中运行线程,这些线程过滤主列表并将相关子集添加到自己的适配器中。每次使用复选框时,我都会将复选框状态保存到SharedReferences中 我在同步各种ListActivity之间的复选框时遇到问题。当我选中1 ListActivity中的一个框并切换到另一个选项卡时,它不会在那里更新。只有当我退出

我有一个应用程序,其中一个主活动生成一个列表,在主活动中有许多选项卡,用于过滤列表,并在带有复选框的自定义ListView中列出整个列表的子集

我在每个选项卡中都有适配器,在各种onCreate()中运行线程,这些线程过滤主列表并将相关子集添加到自己的适配器中。每次使用复选框时,我都会将复选框状态保存到SharedReferences中

我在同步各种ListActivity之间的复选框时遇到问题。当我选中1 ListActivity中的一个框并切换到另一个选项卡时,它不会在那里更新。只有当我退出应用程序并重新启动它时,主活动才会重新生成列表,读取SharedReferences并更新所有复选框

如何即时完成此操作,以便始终同步各个选项卡的各种ListActivity


谢谢。

我建议您在适配器上使用过滤器(即实现您自己的过滤器,从复选框中读取选择)。有这么多线程是:a)程序员感到困惑;b) 同步问题的根源。每个ArrayAdapter都实现Filterable接口,您可以重写getFilter()方法以返回自己的筛选器。在此过滤器中,您可以根据需要过滤出元素。我认为这篇文章应该对你有所帮助。您可能需要阅读您实施的每个过滤器中的设置。

谢谢。如何基于int值而不是CharSequence实现过滤器?performFiltering()和publishResults()似乎只接受CharSequence参数。另外,如何访问在另一个活动中定义/初始化的适配器。我试图通过将另一个活动的适配器传递给我的SetListAdapter()来实现这一点,但是我得到了一个空列表,尽管它的getCount()显示它已完全填充。我调试了它,发现适配器的getView()根本没有被调用。你不能确定地更改方法的签名。但是我认为你不需要这样做-如果我理解正确,你可以忽略传入的值,从设置中读取int。如果我搞错了,您仍然需要传入值,那么可以使用String.valueof(您的int)并通过Integer.valueof(char_seq.toString())在方法中反序列化。