package Ġcom . example . factory fm . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . widget . Toast Ċ import Ġcom . example . factory fm . R Ċ import Ġcom . example . factory fm . model . Artist Ċ import Ġcom . example . factory fm . ui . presenter . Search Artist Contract Ċ import Ġcom . example . factory fm . ui . presenter . Search Presenter Ċ import Ġcom . example . factory fm . utils . hide Keyboard Ċ import Ġkotlinx . android . synt hetic . main . activity _ search .* Ċ import Ġkotlinx . android . synt hetic . main . common _ layout .* Ċ Ċ class ĠSearch Artist Activity Ġ: ĠAppCompatActivity (), ĠSearch Artist Contract . View Ġ{ ĊĠĠĠ Ġprivate Ġval Ġpresenter : ĠSearch Presenter Ġby Ġlazy Ġ{ ĠSearch Presenter ( this , Ġthis ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġartist Adapter Ġby Ġlazy Ġ{ ĠArtist Adapter ( this ) Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ search ) ĊĊĠĠĠĠĠĠĠ Ġre cycler _ view . layout Manager Ġ= ĠLinearLayoutManager ( parent , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġre cycler _ view . adapter Ġ= Ġartist Adapter ĊĠĠĠĠĠĠĠ Ġre cycler _ view . add On Scroll Listener ( object Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Sc rolled ( re cyclerView , Ġdx , Ġdy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! re cyclerView . can Scroll Vert ically ( Linear LayoutManager . VERTICAL ) Ġ&& Ġartist Adapter . artists . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . perform Search ( artist _ query . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrestored Artist List : ĠArrayList < Artist > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState . get Parcelable ArrayList ( getString ( R . string . parcel _ artists )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate List ( restore d Artist List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsearch _ button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Keyboard ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Search () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġartist _ query . setOn Editor ActionListener Ġ{ Ġ_, Ġaction Id , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ SEARCH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Search () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnew Search () Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġinfo _ text . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġartist Adapter . artists . clear () ĊĠĠĠĠĠĠĠ Ġre cycler _ view . scrollTo Position ( 0 ) ĊĠĠĠĠĠĠĠ Ġpresenter . new Search () ĊĠĠĠĠĠĠĠ Ġpresenter . perform Search ( artist _ query . text . toString ()) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġupdate List ( data : ĠList < Artist >) Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġinfo _ text . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġwith ( artist Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Elements ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonError ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġif Ġ( artist Adapter . artists . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo _ text . text Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo _ text . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġmessage , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadapter : ĠArtist Adapter Ġ= Ġre cycler _ view . adapter Ġas ĠArtist Adapter ĊĠĠĠĠĠĠĠ Ġout State ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable ArrayList ( getString ( R . string . parcel _ artists ), ĠArrayList ( adapter . artists )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} ĊĊ Ċ }