package Ġcom . hoc . weather app . utils . ui Ċ Ċ import Ġandroid . os . Looper Ċ import Ġandroidx . annotation . Check Result Ċ import Ġcom . mig uel cat alan . material search view . Material Search View Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Observer Ċ import Ġio . reactivex . android . MainThread Disposable Ċ import Ġio . reactivex . dis pos ables . Dis pos ables Ċ Ċ fun Ġcheck MainThread ( observer : ĠObserver < *> ): ĠBoolean Ġ{ ĊĠ Ġif Ġ( Looper . my Looper () Ġ!= ĠL ooper . get Main Looper ()) Ġ{ ĊĠĠĠ Ġobserver . on Subscribe ( Dis pos ables . empty ()) ĊĠĠĠ Ġobserver . onError ( ĊĠĠĠĠĠ ĠIllegalStateException ( ĊĠĠĠĠĠĠĠ Ġ" Expected Ġto Ġbe Ġcalled Ġon Ġthe Ġmain Ġthread Ġbut Ġwas Ġ${ Thread . currentThread (). name }" ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġreturn Ġfalse ĊĠ Ġ} ĊĠ Ġreturn Ġtrue Ċ } Ċ Ċ @ Check Result Ċ fun ĠMaterial Search View . text Changes (): ĠObservable < String > Ġ{ ĊĠ Ġreturn ĠMaterial Search View Observable ( this ) Ċ } Ċ Ċ internal Ġclass ĠMaterial Search View Observable ( private Ġval Ġview : ĠMaterial Search View ) Ġ: ĊĠ ĠObservable < String >() Ġ{ ĊĠ Ġoverride Ġfun Ġsubscribe Actual ( observer : ĠObserver < in ĠString >) Ġ{ ĊĠĠĠ Ġif Ġ(! check MainThread ( observer )) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ ĠListener ( view , Ġobserver ). let Ġ{ Ġlistener Ġ-> ĊĠĠĠĠĠ Ġobserver . on Subscribe ( listener ) ĊĠĠĠĠĠ Ġview . setOn Query Text Listener ( listener ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġclass ĠListener ( ĊĠĠĠ Ġprivate Ġval Ġview : ĠMaterial Search View , ĊĠĠĠ Ġprivate Ġval Ġobserver : ĠObserver < in ĠString > ĊĠ Ġ) Ġ: ĊĠĠĠ ĠMain Thread Disposable (), ĠMaterial Search View . On Query Text Listener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠ Ġreturn Ġnew Text ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġobserver . onNext ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠ Ġ} Ġ== Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ?) Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġon Dispose () Ġ= Ġview . setOn Query Text Listener ( null ) ĊĠ Ġ} Ċ }