我已经在适配器中使用DiffUtil实现了过滤器功能。
目前,过滤器起作用了,问题在于,如果我从搜索中删除了字符,它只是返回空列表。
我该如何解决这个问题?
我的过滤器功能:
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
List<Cars> listResult;
if (constraint.length() == 0) {
listResult = getCurrentList();
} else {
listResult = getFilteredResults(constraint.toString().toLowerCase());
}
FilterResults results = new FilterResults();
results.values = listResult;
Log.i("filter", "results results.values" + results.values);
return results;
}
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
Log.i("filter", "publishResults started");
submitList((List<Cars>)results.values);
}
};
}
getFilterResults:
private List<Cars> getFilteredResults(String constraint) {
List<Cars> results = new ArrayList<>();
for (Cars item : getCurrentList()) {
if (item.getTitle().toLowerCase().contains(constraint)) {
results.add(item);
}
}
return results;
}
您是否正在使用分页库?我很想知道您是从服务器还是从本地会议室数据库中获取数据。关于这个问题,我可能有一个好的解决方案