package Ġale kt as . games heap . ui . search Ċ Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ Ċ import Ġale kt as . games heap . R Ċ import Ġale kt as . games heap . ui . Item Listener Ċ import Ġale kt as . games heap . ui . game list . Games Adapter Ċ import Ġale kt as . games heap . ui . game list . game . Game Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġkotlinx . android . synt hetic . main . content _ search list .* Ċ Ċ const Ġval ĠSEARCH _ FRAGMENT _ TAG Ġ= Ġ" Search Fragment " Ċ private Ġconst Ġval ĠARG _ QUERY Ġ= Ġ" query " Ċ Ċ class ĠSearch Fragment Ġ: ĠFragment (), ĠItem Listener Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠSearch ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgames Adapter : ĠGames Adapter ĊĠĠĠ Ġprivate Ġvar Ġquery : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarguments ?. putString ( ARG _ QUERY , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( query : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( ARG _ QUERY , Ġquery ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= Ġit . getString ( ARG _ QUERY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġquery ?. let Ġ{ ĠviewModel . search Games ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . content _ search list , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this ). get ( Search ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġgames Adapter Ġ= ĠGames Adapter ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlinear LayoutManager Ġ= ĠLinearLayoutManager ( require Context ()) ĊĠĠĠĠĠĠĠ Ġgame _ list . layout Manager Ġ= Ġlinear LayoutManager ĊĠĠĠĠĠĠĠ Ġgame _ list . adapter Ġ= Ġgames Adapter ĊĊĠĠĠĠĠĠĠ ĠviewModel . isLoading . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgames _ loading _ bar . visibility Ġ= Ġif Ġ( it ) ĠView . VISIBLE Ġelse ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . games . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgames Adapter . games Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsearch ( query : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . query Ġ= Ġquery ĊĠĠĠĠĠĠĠ ĠviewModel . search Games ( query ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġf Ġ= ĠGame Fragment . newInstance ( id ) ĊĠĠĠĠĠĠĠ Ġfragment Manager ?. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . replace ( R . id . content _ container , Ġf , ĠGame Fragment . TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . commit () ĊĠĠĠ Ġ} Ċ Ċ } Ċ