Я отредактировал свой класс адаптера и расширил фильтруемый класс. Моя функция поиска работает, но я не могу получить точный список.
вот мой класс адаптера:
public class ListViewAdapter extends BaseAdapter implements Filterable{
Context context;
private List<Student> studentList;
private List<Student> orginStudentList;
public ListViewAdapter(Context context,List<Student> studentList)
{
this.studentList = new ArrayList<>();
this.studentList = studentList;
this.orginStudentList = studentList;
this.context = context;
}
@Override
public Filter getFilter() {
if(nameFilter == null)
nameFilter = new NameFilter();
return nameFilter;
}
public void resetData() {
studentList = orginStudentList;
}
private class NameFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
// We implement here the filter logic
if ((constraint == null) || (constraint.length() == 0)) {
// No filter implemented we return all the list
results.values = orginStudentList;
results.count = orginStudentList.size();
}else if (Character.isDigit(constraint.charAt(constraint.length()-1))){
results.values = studentList;
results.count = studentList.size();
}
else {
// We perform filtering operation
List<Student> nStudentList = new ArrayList<Student>();
for (Student stu : orginStudentList) {
String name = stu.getName();
if (name.contains(constraint))
nStudentList.add(stu);
}
results.values = nStudentList;
results.count = nStudentList.size();
}
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
studentList = (List<Student>)results.values;
notifyDataSetChanged();
}
}
} Я проверяю, равны ли результаты нулю или нулю, и если да, то вернуть точный список? Чего мне не хватает?