package Ġmobile . se oul ing . com . application . home Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġkotlinx . android . synt hetic . main . frag _ home _ search .* Ċ import Ġmobile . se oul ing . com . R Ċ import Ġmobile . se oul ing . com . application . Base ViewModel Fragment Ċ import Ġmobile . se oul ing . com . application . Injection Ċ import Ġmobile . se oul ing . com . application . Search ViewModel Ċ import Ġmobile . se oul ing . com . application . events . Show Spot Detail Event Ċ import Ġmobile . se oul ing . com . application . home . search . Search Adapter Ċ import Ġmobile . se oul ing . com . framework . Base EventBus Ċ import Ġmobile . se oul ing . com . framework . rx . kt . observe On Main Ċ import Ġmobile . se oul ing . com . framework . rx . kt . subscribe WithError Consumer Ċ Ċ class ĠHome Search Fragment Ġ: ĠBase ViewModel Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch Adapter : ĠSearch Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch ViewModel : ĠSearch ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsearch Adapter Ġ= ĠSearch Adapter ( require Context (), Ġ:: handle Click Spot ) ĊĠĠĠĠĠĠĠ Ġsearch ViewModel Ġ= ĠViewModel Providers . of ( this , ĠInjection . provide Search ViewModel Factory ()). get ( Search ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . frag _ home _ search , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsearch . setOn Editor ActionListener ( object Ġ: ĠTextView . On Editor ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Editor Action ( v : ĠTextView ?, Ġaction Id : ĠInt , Ġevent : ĠKeyEvent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ SEARCH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Search Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġsearch Recycler . adapter Ġ= Ġsearch Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsearch ViewModel . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . observe On Main () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe WithError Consumer ( search Adapter :: submit List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Dis pos ables () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Initial Loading . distinct Until Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On Main () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe WithError Consumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading View . isVisible Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Dis pos ables () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Click Spot ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBase EventBus . getInstance (). post ( Show Spot Detail Event ( id )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Search Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkeyword Ġ= Ġsearch . text . toString () ĊĠĠĠĠĠĠĠ Ġif Ġ( keyword . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch ViewModel . search Spot ( keyword ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }