package Ġcom . ame en . e _ store . ui . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . ame en . e _ store . R Ċ import Ġcom . ame en . e _ store . adapter . Br ands Adapter Ċ import Ġcom . ame en . e _ store . adapter . Categories Adapter Ċ import Ġcom . ame en . e _ store . adapter . Products Adapter Ċ import Ġcom . ame en . e _ store . data . model . Product Model Ċ import Ġcom . ame en . e _ store . databinding . Fragment Explore Binding Ċ import Ġcom . ame en . e _ store . ui . Base Fragment Ċ import Ġcom . ame en . e _ store . ui . activity . MainActivity Ċ import Ġcom . ame en . e _ store . view model . Product ViewModel Ċ Ċ class ĠExplo re Fragment Ġ: ĠBase Fragment < Fragment Explore Binding >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Explore Fragment " ĊĊĠĠĠ Ġ// ViewModels ĊĠĠĠ Ġlateinit Ġvar Ġproducts ViewModel : ĠProduct ViewModel ĊĊĠĠĠ Ġ// RecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcategories Adapter : ĠCategories Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproducts Adapter : ĠProducts Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbr ands Adapter : ĠBr ands Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrecommended Adapter : ĠProducts Adapter ĊĊĠĠĠ Ġoverride Ġval Ġbinding Inflater : Ġ( LayoutInflater , ĠViewGroup ?, ĠBoolean ) Ġ-> ĠFragment Explore Binding ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠFragment Explore Binding :: inflate ĊĊĠĠĠ Ġoverride Ġfun Ġsetup On View Created () Ġ{ ĊĠĠĠĠĠĠĠ Ġproducts ViewModel Ġ= Ġ( activity Ġas ĠMainActivity ). viewModel ĊĠĠĠĠĠĠĠ Ġinit ViewModel () ĊĠĠĠĠĠĠĠ Ġinit Recycler () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ViewModel () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// init ĠView Models ĊĠĠĠĠĠĠĠ Ġproducts ViewModel . categories Data . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġresult List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcategories Adapter . differ . submit List ( result List ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġproducts ViewModel . products Data . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġresult List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproducts Adapter . differ . submit List ( result List ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġproducts ViewModel . brands Data . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġresult List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbr ands Adapter . differ . submit List ( result List ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġproducts ViewModel . recommended Data . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġresult List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecommended Adapter . differ . submit List ( result List ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinit Recycler () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// init ĠRe cycler ĊĠĠĠĠĠĠĠ Ġcategories Adapter Ġ= ĠCategories Adapter () ĊĠĠĠĠĠĠĠ Ġbinding . categories Recycler . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( activity , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġcategories Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Fixed Size () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// init Ġbest Ġsell ing Ġre cycler ĊĠĠĠĠĠĠĠ Ġproducts Adapter Ġ= ĠProducts Adapter () ĊĠĠĠĠĠĠĠ Ġproducts Adapter . on Item Clicked Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Details ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// init Ġbest Sell ing Ġre cycler ĊĠĠĠĠĠĠĠ Ġbinding . best Sell ing RecyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( activity , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġproducts Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// init Ġbr ands Ġre cycler ĊĠĠĠĠĠĠĠ Ġbr ands Adapter Ġ= ĠBr ands Adapter () ĊĠĠĠĠĠĠĠ Ġbinding . brands Recycler . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( activity , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġbr ands Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// init Ġthe Ġrecommended Ġre cycler ĊĠĠĠĠĠĠĠ Ġrecommended Adapter Ġ= ĠProducts Adapter () ĊĠĠĠĠĠĠĠ Ġrecommended Adapter . on Item Clicked Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Details ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . recommend RecyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( activity , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġrecommended Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To Details ( product : ĠProduct Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġbundle . put Serializable (" product Details ", Ġproduct ) ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ explore Fragment _ to _ details Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbundle ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ