Java 多种类型的过滤器<;对象>;

Java 多种类型的过滤器<;对象>;,java,android,list,arraylist,filter,Java,Android,List,Arraylist,Filter,基本上,我想用一个定制的过滤器过滤一个包含两种类型项的ArrayList和,我拿不到 错误在于,在当前方法中,当我按下某个键时,过滤器只返回null视图。但是当我在过滤器中的一个类型上做同样的操作时,所有的都很好 class customFilter extends Filter{ @Override protected FilterResults performFiltering(CharSequence constraint) { FilterResults res

基本上,我想用一个定制的过滤器过滤一个包含两种类型项的ArrayList<代码>和
,我拿不到

错误在于,在当前方法中,当我按下某个键时,过滤器只返回null视图。但是当我在过滤器中的一个类型上做同样的操作时,所有的都很好

 class customFilter extends Filter{
            @Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();

    if(constraint!=null && constraint.length()>0){ 

     constraint=constraint.toString().toUpperCase();
     ArrayList<Object> filter = new ArrayList<>();

     for(int i = 0; i<tempArray.size();i++) {
    if(((titulo)tempArray.get(i)).getTituloTitulo().toUpperCase().contains(constraint)) {

 titulo Titulo = new titulo(((titulo) tempArray.get(i)).getnTitulo(),((titulo) tempArray.get(i)).getTituloTitulo());

filter.add(Titulo);

                         }

     if(((String) tempArray.get(i)).toUpperCase().contains("LIBRO")){
    filter.add(tempArray.get(i));
      }
    }

    results.count = filter.size();
    results.values=filter;

    }else{
     results.count=tempArray.size();
     results.values=tempArray;

 }

    return results;
  }
类customFilter扩展了过滤器{
@凌驾
受保护的筛选器结果性能筛选(CharSequence约束){
FilterResults results=新的FilterResults();
如果(constraint!=null&&constraint.length()>0){
constraint=constraint.toString().toUpperCase();
ArrayList过滤器=新的ArrayList();

对于(int i=0;i如果我理解正确,则如果对象类型为Titulo,则希望执行筛选,否则,只需将其添加到数组中。如果该假设正确,则应检查对象实例类型(Titulo或String)。但实际上您正在执行强制转换

if(tempArray.get(i) instanceOf Titulo){
   //filter your titles here
} else {
  // add your String to the array
}

很难理解你想做什么。你能至少把你的代码格式化一点吗?我只想过滤一个类型为ArraList的数组,因为它包含两种类型的对象,当我用特殊的方式进行所有过滤时,它只适用于一个类型为ArrayList的数组,但是当你有一个未定义的ArrayList时,它就不适用了特快专递运作良好
if(tempArray.get(i) instanceOf Titulo){
   //filter your titles here
} else {
  // add your String to the array
}