4

我正在制作一个 Android 应用程序,其中有一个项目列表(超过 500 个条目)、10 个过滤器按钮(复选框)和一个搜索框。

用户可以点击一个或多个过滤器并相应地更新列表。

我是这样做的:我从 10 个列表开始,每个列表仅由与过滤器匹配的项目初始化,然后当用户激活(例如)过滤器 1、3 和 7 时,我创建列表 1、3 的交集和 7 然后我浏览它以根据搜索查询对其进行过滤。

我发现这是迄今为止“最快”的方式,但我知道有更好、更有效的模式。你有什么推荐的,所以它需要更少的时间?

谢谢

4

1 回答 1

1

您可以使用一系列策略模式。

interface IFilter
{
    List<Item> Filter(List<Item> items);
}

class FilterA implements IFilter
{
    public List<Item> Filter(List<Item> items)
    {
        //filter
    }
}

class FilterB implements IFilter
{
    public List<Item> Filter(List<Item> items)
    {
        //filter
    }
}

//list that would have filters added to it as the user activates filters
List<IFilter> filters = new List<IFilter>();    
//your list of items
List<Item> items = new List<Item>();

public List<Item> Filter() {
    for (IFilter filter : filters) {
        items = filter.Filter(items);
    }    
    return items;
}
于 2012-09-19T17:33:31.333 回答