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. :)