Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 覆盖performfiltering以过滤多个选择_Android_Android Listview_Filtering - Fatal编程技术网

Android 覆盖performfiltering以过滤多个选择

Android 覆盖performfiltering以过滤多个选择,android,android-listview,filtering,Android,Android Listview,Filtering,我想跳过performfiltering,这样我可以过滤多个选项 我已经在谷歌上搜索过了,请参见: 但是我不知道我如何使用答案 有人能帮我吗 我将在下面提供筛选类(在数组适配器类中(在其下方)): public void resetData() { 葡萄酒=葡萄酒原产地; } 公共过滤器getFilter(){ if(wineFilter==null){ wineFilter=新的wineFilter(); } 回流过滤器; } 私有类WineFilter扩展了过滤器{ @凌驾 受保护的过滤器结

我想跳过performfiltering,这样我可以过滤多个选项

我已经在谷歌上搜索过了,请参见:

但是我不知道我如何使用答案

有人能帮我吗

我将在下面提供筛选类(在数组适配器类中(在其下方)):

public void resetData()
{
葡萄酒=葡萄酒原产地;
}
公共过滤器getFilter(){
if(wineFilter==null){
wineFilter=新的wineFilter();
}
回流过滤器;
}
私有类WineFilter扩展了过滤器{
@凌驾
受保护的过滤器结果执行过滤(CharSequence chars){
FilterResults结果=新的FilterResults();
if(chars!=null&&chars.length()>0){
ArrayList过滤器=新的ArrayList();
字符串筛选器字符串=chars.toString().toLowerCase();
用于(葡萄酒对象:葡萄酒){
object.getBiologic();
//过滤本身:
if(object.getName().toLowerCase().contains(chars.toString().toLowerCase())
||object.getColor().toLowerCase()包含(chars.toString().toLowerCase())
||object.getCountry().toLowerCase()包含(chars.toString().toLowerCase())
||object.getTaste().toLowerCase().contains(chars.toString().toLowerCase())
||String.valueOf(object.getYear()).contains(chars.toString())
||Boolean.valueOf(object.getBiologic().toString().equals(chars.toString().toLowerCase())
||Boolean.valueOf(object.getSparkling().toString().equals(chars.toString().toLowerCase()))
filter.add(对象);
}
result.count=filter.size();
result.values=过滤器;
} 
否则{
//添加所有对象
已同步(此){
result.values=winesororiginal;
result.count=winesOriginal.size();
}
}
返回结果;
}
@抑制警告(“未选中”)
@凌驾
受保护的无效发布结果(CharSequence约束,
FilterResults(结果){
//现在我们必须通知适配器新的列表
如果(results.count==0)
notifyDataSetionValidated();
否则{
葡萄酒=(列表)results.values;
notifyDataSetChanged();
}
}
}
}

我曾考虑将charsequence设置为一个数组,并在performfilter的for循环中使用它,但后来我得到了一个关于unimplementedcode的错误。

什么是“多选过滤器”?我可以根据葡萄酒颜色和年份进行过滤,在代码中使用此过滤器,我只能执行其中的一个。我在想一个stringarray或charsequence数组和循环槽?
public void resetData()
    {
        wines=winesOriginal;
    }

    public Filter getFilter() {
        if (wineFilter == null){
            wineFilter = new WineFilter();
        }
        return wineFilter;
    }



private class WineFilter extends Filter {


    @Override
    protected FilterResults performFiltering(CharSequence chars) {

        FilterResults result = new FilterResults();

        if (chars != null && chars.length() > 0) {
            ArrayList<Wine> filter = new ArrayList<Wine>();

            String filterString = chars.toString().toLowerCase();

            for (Wine object : wines) {
                object.getBiologic();
                // the filtering itself:
                if (object.getName().toLowerCase().contains(chars.toString().toLowerCase())
                        ||object.getColor().toLowerCase().contains(chars.toString().toLowerCase())
                        ||object.getCountry().toLowerCase().contains(chars.toString().toLowerCase())
                        ||object.getTaste().toLowerCase().contains(chars.toString().toLowerCase())
                        ||String.valueOf(object.getYear()).contains(chars.toString())
                        ||Boolean.valueOf(object.getBiologic().toString().equals(chars.toString().toLowerCase()))
                        ||Boolean.valueOf(object.getSparkling().toString().equals(chars.toString().toLowerCase())))
                    filter.add(object);
            }
            result.count = filter.size();
            result.values = filter;
        } 

        else {
            // add all objects
            synchronized (this) {
                result.values = winesOriginal;
                result.count = winesOriginal.size();
            }
        }
        return result;
    }

     @SuppressWarnings("unchecked")
    @Override
     protected void publishResults(CharSequence constraint,
                     FilterResults results) {

             // Now we have to inform the adapter about the new list filtered
             if (results.count == 0)
                     notifyDataSetInvalidated();
             else {
                     wines = (List<Wine>) results.values;
                     notifyDataSetChanged();
             }

     }
}
}