【问题标题】:Filter of more than one type<Object>一种以上类型的过滤器<Object>
【发布时间】:2019-07-10 03:17:21
【问题描述】:

基本上,我想使用自定义过滤器过滤包含 2 种类型项目的 ArrayList。 &lt;String&gt;&lt;Titulo&gt; 我听不懂。

错误是当我按下某个键时,当前方法只是过滤器返回空视图。但是当我只在过滤器中使用一种类型时,一切都很好。

 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;
  }

然后发布

    @Override
            protected void publishResults(CharSequence constraint, FilterResults results) {
       originalArray=(ArrayList<Object>)results.values;
       notifyDataSetChanged();

            }

我只想让&lt;titulo&gt; 类型的所有项目都被过滤,并且所有字符串类型的项目都保留位置以保持所有 ArrayList 有序。

【问题讨论】:

  • 很难理解你想做什么。你能不能至少格式化你的代码有点苦涩?
  • 我只想过滤一个 类型的 ArraList,因为它包含两种类型的对象,当我用典型的方式进行所有过滤时,它只适用于例如 类型的 ArrayList 但是当你有一个未定义的 ArrayList 时,它似乎不能正常工作

标签: java android list arraylist filter


【解决方案1】:

如果我理解正确,如果对象是 Titulo 类型,您想要执行过滤器,否则,只需将其添加到数组中。如果该假设是正确的,那么您应该检查您的对象实例类型(Titulo 或 String)。但你实际上是在进行强制转换。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-28
    • 2017-06-20
    • 2011-08-05
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    相关资源
    最近更新 更多