0
Good night ! I am stuck in a problem, in this I have a list of items I receive from firebase, in this list I have visibly 3 attributes of the model class (idAtivity, title and time), thus, I would like the searchview I implemented to search a certain text that I populated in the arraylist of this object, in this case it may even be passing the fixed attribute/column, my codes:
public class AtividadesCriadasFragment extends Fragment implements SearchView.OnQueryTextListener {
//ATRIBUTOS
SearchView searchView;
private ListView listView;
private ArrayAdapter adapter;
private ArrayList<Atividade> atividadeArrayList;
private DatabaseReference reference;
private ValueEventListener valueEventListener;
String idUsuario;
public AtividadesCriadasFragment(){
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_atividades_criadas, container, false);
    searchView = (SearchView) view.findViewById(R.id.id_search);
    //Montando list view e adapter
    atividadeArrayList = new ArrayList<>();
    listView = (ListView) view.findViewById(R.id.lv_minhas_atividades);
    adapter = new AtividadesCriadasAdapter(getActivity(), atividadeArrayList);
    listView.setAdapter(adapter);
    //ATÉ AQUI JÁ FOI CRIADO UMA LISTA QUE É APRESENTADA PARA O USUÁRIO
    //Implementação do searchView
    searchView.setOnQueryTextListener(this);
    //*************** RECUPERANDO A LISTA DE ATIVIDADES CRIADAS POR ESSE USUÁRIO ************/
    SharedPreferencesUser user = new SharedPreferencesUser(getActivity());
    idUsuario = user.getIdentificador();
    reference = ConfiguracaoFirebase.getReferenceFirebase()
            .child("ATIVIDADES")
            .child(idUsuario);
    //Evento de consulta
    valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            //LIMPANDO A LISTA
            atividadeArrayList.clear();
            //Listando cada uma das atividades criadas pelo usuário
            for (DataSnapshot dados: dataSnapshot.getChildren()){ //recupera os filhos do nó principal
                Atividade atividade = dados.getValue(Atividade.class);
                atividadeArrayList.add(atividade);
            }
            adapter.notifyDataSetChanged();
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    };
    return view;
}
In this case, as you can see, the List array is populated according to the return I got from the Activity class. The methods of searchView
@Override
public boolean onQueryTextSubmit(String s) {
    return false;
}
@Override
public boolean onQueryTextChange(String texto) {
    //Atividade atividade = new Atividade();
    adapter.getFilter().filter(texto);
    return false;
}
And the Adapter that receives the information and inflates it on the screen for the user:
    public class AtividadesCriadasAdapter extends ArrayAdapter<Atividade>{
    //ATRIBUTOS
    private ArrayList<Atividade> atividadeArrayList;
    private Context context;
    public AtividadesCriadasAdapter(@NonNull Context c, @NonNull ArrayList<Atividade> objects) {
        super(c, 0, objects);
        this.atividadeArrayList = objects;
        this.context = c;
    }
    //METODO PARA EXIBIÇÃO DA LISTA
    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        //Criando uma view do zero
        View view = null;
        //Validando a lista
        if (atividadeArrayList != null){
            //Inicializando o objeto para montagem das views
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
            //Montando a view a partir do XML
            view = inflater.inflate(R.layout.lista_suas_atividades, parent, false);
            //Recuperando os elementos para exibição
            TextView id = (TextView) view.findViewById(R.id.tvID_list);
            TextView titulo = (TextView) view.findViewById(R.id.tvTitulo_list);
            TextView tempo = (TextView) view.findViewById(R.id.tvTempo_list);
            RoundedImageView imCategoria = (RoundedImageView) view.findViewById(R.id.im_categoria_list);
            Atividade atividade = atividadeArrayList.get(position);
            id.setText(atividade.getId());
            titulo.setText(atividade.getTitulo());
            tempo.setText(atividade.getTempo());
        }
        return view;
    }
}
The way the code is, every time I enter any digit in the searchview it already Zera the results finding nothing, I wanted to at least search for the node . Child("ACTIVITIES"). Child("Idusuario"). Child("idAtivity") <- search by idAtivity for example, which in the activity class is the parameter 'id'.