I have a RecycleView, to which I would like to implement a filter. In the onquerytextchange I try to call the getFilter method of the adapter but this message jumps me. "Can not resolve method 'getFilter'" My code is as follows.
MainActivity
@Override
public boolean onQueryTextChange(String newText) {
recycle_adapter.getFilter().filter(newText);
return false;
}
Framento
recycle_adapter= new RecycleViewAdapter(controlador.getlistaCancion_movil(), new RecycleViewAdapter.OnItemClickListener() {
@Override
public void onItemClick(Class_Canciones clase, int position) {
cancion_selecionada=clase;
}
}, R.layout.items_listview);
RecycleAdapter
@NonNull
@Override
public Filter getFilter() {
if(filtro==null){
filtro=new CustomFilter();
}
return filtro;
}
Filter
import android.widget.Filter;
import java.util.ArrayList;
import josu.start.up.mysoundlibrary.Adapters.RecycleViewAdapter;
import static josu.start.up.mysoundlibrary.Fragmentos.fragmento_listview.recycle_adapter;
public class CustomFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
FilterResults resulst = new FilterResults();
if(charSequence != null && charSequence.length()>0){
//pasamos a mayusculas
charSequence = charSequence.toString().toUpperCase();
ArrayList<Class_Canciones> filtro = new ArrayList<Class_Canciones>();
for(Integer i = 0; i< RecycleViewAdapter.filtro_lista.size(); i++){
if(RecycleViewAdapter.filtro_lista.get(i).getTitulo().toUpperCase().contains(charSequence)){
Class_Canciones d= new Class_Canciones(RecycleViewAdapter.filtro_lista.get(i).getId(),RecycleViewAdapter.filtro_lista.get(i).getTitulo(),
RecycleViewAdapter.filtro_lista.get(i).getArtista(),RecycleViewAdapter.filtro_lista.get(i).getAlbum(),RecycleViewAdapter.filtro_lista.get(i).getRuta());
filtro.add(d);
}
}
resulst.count= filtro.size();
resulst.values = filtro;
}else{
resulst.count= RecycleViewAdapter.filtro_lista.size();
resulst.values = RecycleViewAdapter.filtro_lista;
}
return resulst;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
RecycleViewAdapter.lista= (ArrayList<Class_Canciones>) filterResults.values;
recycle_adapter.notifyDataSetChanged();
}
}