Solution 1 :
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
list.clear();
list.addAll((Collection<? extends Allcontainlist>) results.values);
if (list.size() == 0) {
//Here you can either use a callback(recommended) or show toast
//Toast.makeText(mContext, "No Results Matching Your Query...", Toast.LENGTH_SHORT).show();
}
notifyDataSetChanged();
}
Problem :
I am using simple recyclerview to show list i able to filter my list but i want to show simple toast when search item is not found in my list please help me for that here is my code
for adapter class
Filter filter=new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
ArrayList<Allcontainlist> filter_list=new ArrayList<>();
if (constraint==null||constraint.length()==0){
filter_list.addAll(Alllist);
}else
{
String filter_pattern=constraint.toString().toLowerCase().trim();
for (Allcontainlist allcontainlist:Alllist){
if(allcontainlist.getRout().toLowerCase().contains(filter_pattern))
{
filter_list.add(allcontainlist);
}
}
}
FilterResults results=new FilterResults();
results.values=filter_list;
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
list.clear();
list.addAll((Collection<? extends Allcontainlist>) results.values);
notifyDataSetChanged();
}
};
and this code for search lists
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.search_bar,menu);
MenuItem menuItem=menu.findItem(R.id.search_bar);
SearchView searchView = (SearchView) menuItem.getActionView();
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setQueryHint("Search buses");
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
if(list.contains(query)) {
alladapter.getFilter().filter(query);
}else
{
Toast.makeText(getActivity(),"Not found",Toast.LENGTH_SHORT).show();
}
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if(TextUtils.isEmpty(newText))
{
Toast.makeText(getActivity(),"not found",Toast.LENGTH_SHORT).show();
}
else
alladapter.getFilter().filter(newText);
return false;
}
});
super.onCreateOptionsMenu(menu, inflater);
}
I have tried some example code but not working please help me for this i want to just toast when the search result is empty thank you
Comments
Comment posted by Hoàng Vũ Anh
creat an callback but when you you search with filter, adapter change everytime when you typing, that’s not good.