如何使用过滤器添加更多值

时间:2015-04-20 19:43:19

标签: java android filter

我有一个过滤器,我只能在那里放一个完全匹配100%的值,但我想添加多个匹配。

我该怎么做?

@Override
protected FilterResults performFiltering(CharSequence constraint) {
    constraint = constraint.toString().toLowerCase();
    FilterResults result = new FilterResults();
    if(constraint != null && constraint.toString().length() > 0) {
        ArrayList<Country> filteredItems = new ArrayList<Country>();

        for(int i = 0, l = originalList.size(); i < l; i++) {
            Country country = originalList.get(i);

            while(constraint.toString().toLowerCase().matches(
                        country.getRegion().toString().toLowerCase()))
                filteredItems.add(country);
        }
        result.count = filteredItems.size();
        result.values = filteredItems;
    } else {
        synchronized(this) {
            result.values = originalList;
            result.count = originalList.size();
        }
    }
    return result;
}

1 个答案:

答案 0 :(得分:0)

尝试:

String[] values = constraint.toString().split(",");

使用逗号或其他符号分隔您的值。

@Override
    protected FilterResults performFiltering(CharSequence constraint) {

        constraint = constraint.toString().toLowerCase();
        FilterResults result = new FilterResults();
        if(constraint != null && constraint.toString().length() > 0)
        {
            String[] values = constraint.toString().split(",");
            ArrayList<Country> filteredItems = new ArrayList<Country>();

            for(int i = 0, l = originalList.size(); i < l; i++)
            {
                Country country = originalList.get(i);
                for (int j = 0; i<values.lenght(); j++) {
                    while(values[j].toString().toLowerCase().matches(country.getRegion().toString().toLowerCase()))
                        filteredItems.add(country);
                }
            }
            result.count = filteredItems.size();
            result.values = filteredItems;
        }
        else
        {
            synchronized(this)
            {
                result.values = originalList;
                result.count = originalList.size();
            }
        }
        return result;
    }