J'ai créé une vue de liste dans Android et je souhaite ajouter du texte d'édition au-dessus de la liste et lorsque l'utilisateur saisit du texte, la liste sera filtrée en fonction de l'entrée de l'utilisateur
Quelqu'un peut-il me dire s'il existe un moyen de filtrer l'adaptateur de liste dans Android?
Réponses:
Ajoutez un EditText au-dessus de votre liste dans son fichier de mise en page .xml. Et dans votre activité / fragment ..
La base ici est d'ajouter un OnTextChangeListener à votre texte d'édition et à l'intérieur de sa méthode de rappel, appliquez le filtre à l'adaptateur de votre liste.
ÉDITER
Pour obtenir un filtre sur votre BaseAdapter personnalisé, vous devrez implémenter une interface filtrable .
Dans performFiltering (), vous devez effectuer une comparaison réelle de la requête de recherche avec les valeurs de votre base de données. Il transmettra son résultat à la méthode publishResults () .
la source
Implémentez votre adaptateur Filtrable:
puis créez votre classe Filter:
de cette façon, votre adaptateur est filtrable, vous pouvez passer l'élément de filtre au filtre de l'adaptateur et faire le travail. J'espère que cela vous sera utile.
la source
Au cas où quelqu'un serait toujours intéressé par ce sujet, je trouve que la meilleure approche pour filtrer les listes est de créer une classe de filtre générique et de l'utiliser avec certaines techniques de réflexion / génériques de base contenues dans le package SDK old school de Java. Voici ce que j'ai fait:
Et ensuite, la seule chose que vous devez faire est de créer le filtre en tant que classe membre (éventuellement dans le "onCreate" de la vue) en passant la référence de votre adaptateur, votre liste et la méthode à appeler pour le filtrage:
La seule chose qui manque maintenant, c'est de remplacer la méthode "getFilter" dans la classe d'adaptateur:
Terminé! Vous devriez réussir à filtrer votre liste - Bien sûr, vous devez également implémenter votre algorithme de filtrage de la meilleure façon qui décrit votre besoin, le code ci-dessous n'est qu'un exemple. . J'espère que cela a aidé, prenez garde.
la source