2 votes

Comment activer ma méthode de recherche lorsque le texte est commencé à être supprimé ?

J'utilise ma méthode "searching" pour filtrer les données dans le recyclerView en fonction des modifications de l'entrée EditText, cela fonctionne bien mais lorsque le texte est supprimé (partiellement), rien n'est filtré.

Ma méthode de recherche :

//a method to filter the question list search
private void searching(){
    search.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int il, int i2) {
        }
        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            for (int iterator = 0; iterator < filterForSearch.size(); iterator++) {
                //if what i searched have a part of question title - do not filter else filter
                if (!filterForSearch.get(iterator).get("title").toString().contains(search.getText().toString())  ){
                    filterForSearch.remove(iterator);
                }
            }
            //set the adapter with the data that the user searched
            setQuestionsAdapter(filterForSearch);
            filterForSearch = cloudData;
        }
        @Override
        public void afterTextChanged(Editable editable) {
            // when the user delete his search - show him the questions again
            if(search.getText().toString().equals("")){
                pullData();
            }
    }
    });
}

1voto

guy Points 972

Il semble que vous n'enregistriez que le résultat filtré et, de ce fait, lorsque vous supprimez le texte, vous avez moins de texte à filtrer. Si vous filtrez à partir de la base de données pour obtenir tous les résultats, je recommanderais d'effectuer une recherche avec filtre pour chaque changement de texte, de cette façon vous filtrerez à partir de toute votre base de données (vous n'aurez pas besoin de l'introduire entièrement dans l'appareil, ce qui est une erreur), et ensuite vous obtiendrez vos résultats chaque fois que vous modifierez le texte (sur l'effacement également).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X