Вот мой код в «if (query == null)». Как вы можете видеть, я не помещаю туда никакого кода, потому что я не знаю, как отобразить «никаких результатов не найдено» в RecyclerView, если пользователь не сопоставляет свои входные данные с поисковым обзором. Я использую RecyclerView для отображения результатов поиска пользователя.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
inflater.inflate(R.menu.menu_main, menu);
SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
searchView = (SearchView) menu.findItem(R.id.action_filter_search)
.getActionView();
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getActivity().getComponentName()));
searchView.setMaxWidth(Integer.MAX_VALUE);
searchView.setQueryHint(getResources().getString(R.string.search_hint));
// listening to search query text change
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
// filter recycler view when query submitted
mAdapter.getFilter().filter(query);
return false;
}
@Override
public boolean onQueryTextChange(String query) {
// filter recycler view when text is changed
mAdapter.getFilter().filter(query);
return false;
}
});
super.onCreateOptionsMenu(menu, inflater);
}
в адаптере
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
String charString = charSequence.toString();
if (charString.isEmpty()) {
categoriesFiltered = categorieslist;
} else {
List<CategoriesP> filteredList = new ArrayList<>();
for (CategoriesP row : categorieslist) {
// name match condition. this might differ depending on your requirement
// here we are looking for name or phone number match
//|| row.getPhone().contains(charSequence)
if (row.getName().toLowerCase().contains(charString.toLowerCase()) ) {
filteredList.add(row);
}
}
categoriesFiltered = filteredList;
}
FilterResults filterResults = new FilterResults();
filterResults.values = categoriesFiltered;
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults filterResults) {
categoriesFiltered = (ArrayList<CategoriesP>) filterResults.values;
notifyDataSetChanged();
}
};
}