/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 Ġ Ġz hou ha oo Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . zh ou ha oo . common . extensions Ċ Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . widget . TextView Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġz hou Ġon Ġ 2 0 1 8 / 3 / 3 0 . Ċ Ġ*/ Ċ Ċ class ĠK Text Watcher Ġ: ĠText Watcher Ġ{ ĊĊĠĠĠ Ġval ĠTextView . isEmpty ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtext . isEmpty () ĊĊĠĠĠ Ġval ĠTextView . isNotEmpty ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtext . isNotEmpty () ĊĊĠĠĠ Ġval ĠTextView . isBlank ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtext . isBlank () ĊĊĠĠĠ Ġval ĠTextView . isNotBlank ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtext . isNotBlank () ĊĊĠĠĠ Ġprivate Ġvar Ġ_ before TextChanged : Ġ(( CharSequence ?, ĠInt , ĠInt , ĠInt ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġ_ on TextChanged : Ġ(( CharSequence ?, ĠInt , ĠInt , ĠInt ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġ_ after TextChanged : Ġ(( Editable ?) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ before TextChanged ?. invoke ( s , Ġstart , Ġcount , Ġafter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ on TextChanged ?. invoke ( s , Ġstart , Ġbefore , Ġcount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ after TextChanged ?. invoke ( s ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbefore TextChanged ( listener : Ġ( CharSequence ?, ĠInt , ĠInt , ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ before TextChanged Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon TextChanged ( listener : Ġ( CharSequence ?, ĠInt , ĠInt , ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ on TextChanged Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġafter TextChanged ( listener : Ġ( Editable ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ after TextChanged Ġ= Ġlistener ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ çĽĳåĲ¬ æĸĩæľ¬ åıĺåĮĸ Ċ Ġ*/ Ċ inline Ġfun ĠTextView . text Watcher ( init : ĠK Text Watcher . () Ġ-> ĠUnit ) Ġ= Ġadd TextChanged Listener ( K Text Watcher (). apply ( init )) Ċ