В основном я хочу отфильтровать с помощью специального фильтра ArrayList, который содержит 2 типа элементов.<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>
фильтруется, и все элементы типа string сохраняют позицию, чтобы сохранить все ArrayList в порядке.