package Ġcom . ly c . g ank . search Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . IN VISIBLE Ċ import Ġandroid . view . View . VISIBLE Ċ import Ġandroid . view . input method . Editor Info . IME _ ACTION _ DONE Ċ import Ġandroid . view . input method . Editor Info . IME _ NULL Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġcom . g ig av alue . mobile . widget . Linear Item Divider Ċ import Ġcom . ly c . data . resp . G ank Item Ċ import Ġcom . ly c . g ank . G ank With Img View Binder Ċ import Ġcom . ly c . g ank . G ank Without Img View Binder Ċ import Ġcom . ly c . g ank . On G ank ItemClickListener Ċ import Ġcom . ly c . g ank . R Ċ import Ġcom . ly c . g ank . article . Article Activity Ċ import Ġcom . ly c . g ank . category . Girl Item View Binder Ċ import Ġcom . ly c . g ank . photo . Photo Activity Ċ import Ġcom . ly c . g ank . utils .* Ċ import Ġcom . ly c . g ank . widget . Load More Detector Ċ import Ġkotlinx . android . synt hetic . main . activity _ search .* Ċ Ċ class ĠSearch Activity Ġ: ĠAppCompatActivity (), ĠText Watcher , ĊĠĠĠĠĠĠĠ ĠView . OnClickListener , ĠLoad More Detector . Load More Callback , ĊĠĠĠĠĠĠĠ ĠOn G ank ItemClickListener , ĠTextView . On Editor ActionListener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġreactive Adapter : ĠReactive Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch ViewModel : ĠSearch ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ search ) ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( tb _ search ) ĊĠĠĠĠĠĠĠ Ġet _ search . add TextChanged Listener ( this ) ĊĠĠĠĠĠĠĠ Ġet _ search . setOn Editor ActionListener ( this ) ĊĠĠĠĠĠĠĠ Ġiv _ search _ cancel . setOnClickListener ( this ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĊĠĠĠĠĠĠĠ Ġsearch ViewModel Ġ= Ġprovide ViewModel () ĊĠĠĠĠĠĠĠ Ġreactive Adapter Ġ= ĠReactive Adapter ( search ViewModel . search List ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobserve ( this @ Search Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister ( G ank Item :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to ( G ank With Img View Binder ( this @ Search Activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG ank Without Img View Binder ( this @ Search Activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG irl Item View Binder ( this @ Search Activity )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Class Link er Ġ{ Ġ_, Ġt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Class Link er Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . type Ġ== Ġ" ç¦ı åĪ© " Ġ-> ĠG irl Item View Binder :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . img Url Ġ!= Ġnull Ġ-> ĠG ank With Img View Binder :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠG ank Without Img View Binder :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister ( Error Item :: class . java , ĠError Item View Binder ( search ViewModel :: load More )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister ( Load More Item :: class . java , ĠLoad More Item View Binder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister ( No More Item :: class . java , ĠNo More Item View Binder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrv _ search . adapter Ġ= Ġreactive Adapter ĊĠĠĠĠĠĠĠ Ġrv _ search . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġrv _ search . addItem Decoration ( Linear Item Divider ( this )) ĊĠĠĠĠĠĠĠ ĠLoad More Detector . detect ( rv _ search , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġrefresh er _ search . isEnabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġsearch ViewModel . refresh State . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRefresh State . Refresh ing Ġ-> Ġrefresh er _ search . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRefresh State . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh er _ search . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( it . msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġrefresh er _ search . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsearch ViewModel . load State . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoad State . Error Ġ-> Ġtoast ( it . msg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( s . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv _ search _ cancel . visibility Ġ= ĠIN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv _ search _ cancel . visibility Ġ= ĠVIS IBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . iv _ search _ cancel Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv _ search _ cancel . visibility Ġ= ĠIN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet _ search . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch ViewModel . reset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan Load More () Ġ= Ġsearch ViewModel . load State . value Ġis ĠLoad State . Has More ĊĊĠĠĠ Ġoverride Ġfun Ġload More () Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch ViewModel . load More () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Girl Item Click ( iv : ĠImageView , Ġitem : ĠG ank Item ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPhoto Activity . start ( this , Ġitem ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Video Item Click ( item : ĠG ank Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġopen Web Page ( item . url ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Article Item Click ( item : ĠG ank Item ) Ġ{ ĊĠĠĠĠĠĠĠ ĠArticle Activity . start ( this , Ġitem ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Editor Action ( v : ĠTextView , Ġaction Id : ĠInt , Ġevent : ĠKeyEvent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠI ME _ NULL Ġ|| Ġaction Id Ġ== ĠI ME _ ACTION _ DONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsearch () Ġ{ ĊĠĠĠĠĠĠĠ ĠSoft Keyboard Util . hide Keyboard ( et _ search ) ĊĠĠĠĠĠĠĠ Ġsearch ViewModel . search ( et _ search . text . toString ()) ĊĠĠĠ Ġ} Ċ } Ċ