Problems with a RecycleView filter

0

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();
}
 }
    
asked by Josu Vázquez 16.04.2018 в 00:41
source

1 answer

0

This error occurs because the declaration of the adapter was not correct. Once I have changed everything works perfectly.

    
answered by 16.04.2018 в 00:46