TextWatcher en kotlin

Je travaille actuellement sur une nouvelle application que je compte vous présenter prochainement. En travaillant sur cette nouvelle application, j’ai appris de nouvelles notions, notamment lorsque j’ai utilisé les EditText. Dans l’application sur laquelle je travaille actuellement, je cherche à bloquer l’accès à un bouton à l’utilisateur. Tant que l‘utilisateur n’a pas rempli les champs de saisie (EditText), le bouton reste bloqué. Pour intégrer cette fonctionnalité, j’ai utilisé un Textwatcher.

Un TextWatcher est une classe et donc un objet (si cela ne vous parle pas je vous invite à lire mon article “Mes découvertes sur kotlin”). Cet objet propose trois méthodes utiles pour interagir avec les EditTexte. Dans cet article, je vais vous présenter ces trois méthodes, quelques cas d’usage et pour finir le problème que j’ai rencontré.

Présentation

code_TextWatcher

Le textWatcher a plusieurs particularités. Il doit être déclaré dans une fonction que l’on nomme “addTextChangedListener” cette fonction permet d’ajouter un textWatcher  à la liste des méthodes qui sont appelées lorsqu’un textview, un EditText change. Un textWatcher possède également trois méthodes qui doivent obligatoirement être déclaré même si on ne les utilise pas. Le mot-clé “override” indique que la méthode est destinée à remplacer la méthode déjà existant de la classe TextWatcher. On réécrit par-dessus !

fonction_afterTextChanged

La méthode afterTextchanged interagie après la modification de votre TexteView ou de votre EditText. Le paramètre s du type éditable, permet d’interagir avec votre composant graphique (Textview, EditTex ). Faite tout de même attention, éviter de former une boucle infinie. Cette boucle infinie peut être provoquée, si vous modifiez votre composant graphique au sein de cette fonction. Cette même fonction attend déjà que votre composant graphique soit modifié pour s’exécuter.

fonction_beforeTextChanged

La méthode beforeTextchanged interagie avant la modification et après le click sur votre composant (TexteView, EditText). Le paramètre s du type CharSequence, permet de définir une séquence de charactère qui remplacera la zone de saisie. Cette séquence commence à un point  “start” et se finit à un point “after” .  Le paramètre “count” du type Int (entier) définit le nombre de charactère entre ces deux points.

fonction_onTextChanged

La méthode onTextchanged interagie au même instant que l’utilisateur édite son texte (TexteView, EditText). Cette méthode possède les  mêmes paramètres que la méthode précédente, c’est-à-dire  une séquence de charactère, un point “start”, un point “after” et un conteur de caractère entre ces deux points “count”.

Quelques cas d’usages

  

Pour la méthode onTextchanged, vous pouvez l’appliquer à un usage très sympa. Vous pouvez par exemple, mètre en place un EditText qui propose une liste de suggestion par rapport au caractère que rentre l’utilisateur.

Pour la méthode afterTextchanged, vous pouvez par exemple bloquer l’accès à un bouton. Tant que l’utilisateur n’a pas rempli le champ de saisie, le bouton n’est pas disponible.

Pour la méthode beforeTextchanged, je n’ai pas trouvé de cas concret. En faisant quelque recherche j’ai remarqué qu’elle s’utilise souvent avec l’une des deux autres méthodes. Par exemple pour reprendre la saisie où en était l’utilisateur. La démonstration ci-dessus garde en mémoire la dernière saisie au clavier par l’utilisateur.

Le problème que j’ai rencontré

Le problème que j’ai rencontré c’est révélé lors de l’initialisation de mon TextWatcher. Pendant mes tests la simple saisie dans mon EditText faisait planter l’application. La solution que j’ai trouvée, c’est de le déclarer dans une méthode de la classe EditText. En principe on ne peut pas modifier cette classe car elle fait partie de la librairie standard de kotlin. J’ai été surpris, qu’en kotlin on puisse déclarer une méthode en dehors de sa classe.

fonction_EditText_onChange

La fonction Onchange appartient désormais à la classe EditTexte. Cette méthode ajoute un TextWatcher avec ces trois méthodes qui interviennent avant, après ou pendant la modification d’un textview ou d’un EditText.

exemple_appel_new_methode_de_classe

On peut donc ensuite l’appeler à partir de notre nouveau composant graphique (EditText) à l’intérieur de nos méthodes (par exemple : La méthode OnCreate).

Merci d’avoir lu ! Maintenant, si vous avez aimé le contenu de l’article, si  vous connaissez une personne à qui cet article peut intéresser, n’hésiter pas à le liker et à le partager sur les réseaux sociaux. Si  vous souhaitez me faire part de vos remarques, de vos problèmes, de vos suggestions de prochain article ou tous simplement de votre soutien n’hésitez pas à m’en faire part dans les commentaires, je vous en remercie.

Partager l'article :
  •  
  •  
  •  
  •  
  • 11
    Partages

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *