【问题标题】:How to implement collection filtering based on different criteria如何实现基于不同条件的集合过滤
【发布时间】:2012-09-08 23:23:37
【问题描述】:

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

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

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

我发现这是迄今为止“最快”的方式,但我知道有更好、更有效的模式。您有什么建议可以缩短时间?

谢谢

【问题讨论】:

    标签: java android design-patterns collections filtering


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-12
      • 2015-03-06
      • 1970-01-01
      • 2018-03-22
      • 2012-09-03
      • 1970-01-01
      • 2021-08-30
      相关资源
      最近更新 更多