package Ġcom . and rew ow ens . rocket stores . ui . list Ċ Ċ 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 Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . Navigation Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġkotlinx . coroutines . launch Ċ import Ġcom . and rew ow ens . rocket stores . R Ċ import Ġcom . and rew ow ens . rocket stores . data . db . entity . Store Entry Ċ import Ġcom . and rew ow ens . rocket stores . ui . base . Scoped Fragment Ċ import Ġcom . x wr ay . group ie . Group Adapter Ċ import Ġcom . x wr ay . group ie . ViewHolder Ċ import Ġkotlinx . android . synt hetic . main . stores _ list _ fragment .* Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġorg . kode in . di . K ode in Ċ import Ġorg . kode in . di . K ode in Aware Ċ import Ġorg . kode in . di . android . x . closest K ode in Ċ import Ġorg . kode in . di . generic . instance Ċ Ċ class ĠStores List Fragment Ġ: ĠScoped Fragment (), ĠK ode in Aware Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġk ode in : ĠK ode in Ġby Ġclosest K ode in () ĊĊĠĠĠ Ġ// ĠGet Ġinstance Ġusing Ġk ode in ĊĠĠĠ Ġprivate Ġval ĠviewModel Factory : ĠStores List ViewModel Factory Ġby Ġinstance () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠStores List ViewModel ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgroup Adapter : ĠGroup Adapter < ViewHolder > ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠSince Ġthe Ġapplication Ġuses Ġnavigation Ġhave Ġto Ġset Ġthe Ġtool bars Ġtitle Ġin Ġeach Ġfragment ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠAppCompatActivity )?. support ActionBar ?. title Ġ= ĠgetString ( R . string . app _ name ) ĊĊĠĠĠĠĠĠĠ Ġbind UI () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . stores _ list _ fragment , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind UI () Ġ= Ġlaunch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstores Ġ= ĠviewModel . store Entries . await () ĊĊĠĠĠĠĠĠĠ Ġstores . observe ( this @ Stores List Fragment , ĠObserver Ġ{ Ġentries Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entries Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ Stores List Fragment . context , Ġ" No Ġdata Ġavailable Ġcheck Ġyour Ġconnection ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Observer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup _ loading . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit RecyclerView ( entries ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit RecyclerView ( entries : ĠList < Store Entry >) Ġ{ ĊĠĠĠĠĠĠĠ Ġgroup Adapter . addAll ( entries . to Stores Item ()) ĊĠĠĠĠĠĠĠ Ġgroup Adapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠList < Store Entry >. to Stores Item () Ġ: ĠList < Stores Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStores Item ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this , ĠviewModel Factory ). get ( Stores List ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġgroup Adapter Ġ= ĠGroup Adapter () ĊĊĠĠĠĠĠĠĠ Ġre cyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( this @ Stores List Fragment . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġgroup Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgroup Adapter . setOn ItemClickListener Ġ{ Ġitem , Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( item Ġas ? ĠStores Item )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Store Detail ( it . store Entry . store ID , Ġit . store Entry . name , Ġview ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Store Detail ( store Id : ĠString , Ġstore Name : ĠString , Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Detail Ġ= ĠStores List Fragment Directions . action Detail ( store Id , Ġstore Name ) ĊĠĠĠĠĠĠĠ ĠNavigation . find Nav Controller ( view ). navigate ( action Detail ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ