Environnement Android
kotlin_version = '1.3.20'
compileSdkVersion 28
J'ai un adaptateur de type ArrayAdapter
Activity.xml
... searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { override fun onQueryTextChange(newText: String): Boolean { adapter.filter.filter(newText) return true } override fun onQueryTextSubmit(query: String): Boolean { // task HERE return false } }) ...
Activité. kt
<android.support.v7.widget.SearchView android:id="@+id/searchView"> ... </android.support.v7.widget.SearchView> <ListView android:id="@+id/listView" ... />
Donc, setOnQueryTextListener () fonctionne et même l ' adaptateur fonctionne correctement, mais je ne parviens pas à faire fonctionner le filtre.
3 Réponses :
Ajoutez cette ligne
adapter.notifyDataSetChanged()
Après l'instruction de filtre.
Merci mais cela fonctionne également sans notifyDataSetChanged (). :) Le problème était avec le bloc entier de setOnQueryTextListener () lui-même. Il devait être en dehors du cadre d'une boucle que j'utilisais pour remplir ma liste.
Avertissez l ' adaptateur de la modification des données:
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { override fun onQueryTextChange(newText: String): Boolean { adapter.filter.filter(newText) adapter.notifyDataSetChanged() return true } override fun onQueryTextSubmit(query: String): Boolean { return false } })
Merci mais cela fonctionne également sans notifyDataSetChanged (). :) Le problème était avec le bloc entier de setOnQueryTextListener () lui-même. Il devait être en dehors du cadre d'une boucle que j'utilisais pour remplir ma liste.
<½Solution
La solution à ce problème était plutôt dans la définition de la portée du code elle-même. Pour les personnes qui pourraient tomber sur une situation similaire, assurez-vous de vérifier le searchView.setOnQueryTextListener () et assurez-vous de le garder à l'écart de toutes les boucles que vous pourriez utiliser pour alimenter la liste pour l'adaptateur. :)
Honnêtement, le meilleur moyen est d'utiliser RecyclerView et d'abandonner SearchView pour votre propre code;) mais je sais que ce n'est pas exactement une réponse complète, d'où la raison pour laquelle c'est un commentaire. Je ne pense pas que SearchView jamais ait répondu à mes besoins.
Pouvez-vous publier le code de votre adaptateur?
@EpicPandaForce Merci pour votre suggestion. J'essaierai d'utiliser RecyclerView la prochaine fois. :)