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
?其他地方?
我最终所做的只是创建一个具有正确值的新适配器,并在每次需要过滤时替换旧适配器。
我正在创建一个应用程序,用户可以在其中设置 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
?其他地方?
我最终所做的只是创建一个具有正确值的新适配器,并在每次需要过滤时替换旧适配器。