【发布时间】:2019-07-10 03:17:21
【问题描述】:
基本上,我想使用自定义过滤器过滤包含 2 种类型项目的 ArrayList。 <String> 和 <Titulo> 我听不懂。
错误是当我按下某个键时,当前方法只是过滤器返回空视图。但是当我只在过滤器中使用一种类型时,一切都很好。
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();
}
我只想让<titulo> 类型的所有项目都被过滤,并且所有字符串类型的项目都保留位置以保持所有 ArrayList 有序。
【问题讨论】:
-
很难理解你想做什么。你能不能至少格式化你的代码有点苦涩?
-
我只想过滤一个
标签: java android list arraylist filter