package Ġcom . inl ac ou . ex input . rx . input Ċ Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . widget . TextView Ċ Ċ import Ġio . reactivex . rx java 3 . core . Observable Emitter Ċ import Ġio . reactivex . rx java 3 . core . Observable On Subscribe Ċ Ċ class ĠText Change Obs Ġconstructor ( private Ġval Ġview : ĠTextView ) Ġ: ĠObservable On Subscribe < String > Ġ{ ĊĊ ĉ private Ġlateinit Ġvar Ġlistener : ĠText Watcher ĊĊ ĉ @ Throws ( Exception :: class ) Ċ ĉ override Ġfun Ġsubscribe ( subscriber : ĠObservable Emitter < String >) Ġ{ Ċĉ ĉ listener Ġ= Ġobject : ĠText Watcher { Ċĉĉ ĉ override Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ Ċĉĉĉ ĉ subscriber . onNext ( s ?. toString () Ġ?: Ġ"") Ċĉĉ ĉ } ĊĊĉĉ ĉ override Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ Ċĉĉ ĉ } ĊĊĉĉ ĉ override Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ Ċĉĉ ĉ } Ċĉ ĉ } ĊĊĉ ĉ view . add TextChanged Listener ( listener ) ĊĊĉ ĉ subscriber . set C ancellable Ġ{ Ġview . remove TextChanged Listener ( listener ) Ġ} Ċ ĉ } Ċ }