Android 使用用户选项过滤 ListView

Android filter ListView with users options

我正在创建一个应用程序,用户可以在其中设置 PreferencesActivity 中的一些首选项,然后我得到一个带有 ListView 的片段,该片段应该根据用户拥有的内容进行过滤选择。我已经有了一个 Filter,它使用用户文本输入来过滤列表,但我不确定如何根据 PreferencesActivity 中的首选项进行过滤。

表示单个列表项的数据 class 如下所示:

public class MyData
{
   private ArrayList<SomeEnumType> enumListMember;
   private String forRegularStringFilter;
   ...
}

public enum SomeEnumType
{
   VAL1,
   VAL2,
   VAL3
}

用户在首选项中看到的是 MultiSelectListPreference,其中包含条目 VAL1、VAL2、VAL3,并且用户可以 select 其中的多个条目。在用户完成他的 selection 后,该列表假定仅显示其 enumListMember 包含用户选择的所有枚举值的项目。例如,class 的列表可以包含 VAL1 和 VAL3,因此如果用户选择 VAL3,则应该显示该项目。如果他选择VAL2,应该是过滤了。

如何以及在哪里进行这种过滤?在适配器的 getView?其他地方?

我最终所做的只是创建一个具有正确值的新适配器,并在每次需要过滤时替换旧适配器。