package Ġid . kor id or 5 0 . jes ika . ui . voucher _ list Ċ Ċ import Ġandroid . content . Context Ċ 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 . LinearLayout Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġid . kor id or 5 0 . jes ika . J es ika App Ċ import Ġid . kor id or 5 0 . jes ika . R Ċ import Ġid . kor id or 5 0 . jes ika . data . model . V oucher Ċ import Ġid . kor id or 5 0 . jes ika . databinding . V oucher List Fragment Binding Ċ import Ġkotlinx . android . synt hetic . main . voucher _ list _ fragment .* Ċ import Ġkotlinx . android . synt hetic . main . voucher _ list _ fragment . view .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠV oucher List Fragment Ġ: ĠFragment (), ĠV oucher ListAdapter . V oucher List Callback Ġ{ ĊĊĠĠ Ġ@ Inject Ġlateinit Ġvar ĠviewModel : ĠV oucher List ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠV oucher ListAdapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠV oucher List Fragment Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlist Ġ: ĠList < V oucher > ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġ( context . application Context Ġas ĠJes ika App ). component . inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( in flater , ĠR . layout . voucher _ list _ fragment , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠV oucher ListAdapter ( this ) ĊĠĠĠĠĠĠĠ Ġbinding . fragment Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġrv V oucher List . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġrv V oucher List . layout Manager Ġ= ĠGrid LayoutManager ( context , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . voucher LiveData . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . add Items ( it . filter Ġ{ Ġv oucher Ġ-> Ġv oucher . category Ġ== Ġ 1 }) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . user LiveData . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ user _ po ins . text Ġ= Ġit . round P oin ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġon Category ClickListener () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Category ClickListener () Ġ{ ĊĠĠĠĠĠĠĠ Ġln _ cat _ 1 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Effect ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . add Items ( list . filter Ġ{ Ġv Ġ-> Ġ Ġv . category Ġ== Ġ 1 }) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġln _ cat _ 2 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Effect ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . add Items ( list . filter Ġ{ Ġv Ġ-> Ġ Ġv . category Ġ== Ġ 2 }) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġln _ cat _ 3 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Effect ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . add Items ( list . filter Ġ{ Ġv Ġ-> Ġ Ġv . category Ġ== Ġ 3 }) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġln _ cat _ 4 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Effect ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . add Items ( list . filter Ġ{ Ġv Ġ-> Ġ Ġv . category Ġ== Ġ 4 }) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġln _ cat _ 5 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Effect ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . add Items ( list . filter Ġ{ Ġv Ġ-> Ġ Ġv . category Ġ== Ġ 5 }) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon V oucher Clicked ( id V oucher : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( V oucher List Fragment Directions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. action V oucher List Fragment To Re deem Promo Fragment ( id V oucher )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpop Back Stack Ġ() Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclick Effect ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist LinearLayout Ġ= ĠarrayOf ( ln _ cat _ 1 , Ġln _ cat _ 2 , Ġln _ cat _ 3 , Ġln _ cat _ 4 , Ġln _ cat _ 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġlist TextView Ġ= ĠarrayOf ( tv _ cat _ 1 , Ġtv _ cat _ 2 , Ġtv _ cat _ 3 , Ġtv _ cat _ 4 , Ġtv _ cat _ 5 ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġlist LinearLayout . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġindex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist LinearLayout [ i ]. background Ġ= ĠContext Compat . get Drawable ( require Context (), ĠR . drawable . bg _ circle _ solid _ blue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist TextView [ i ]. setTextColor ( Context Compat . getColor ( require Context (), ĠR . color . white )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist LinearLayout [ i ]. background Ġ= ĠContext Compat . get Drawable ( require Context (), ĠR . drawable . bg _ circle _ stroke _ grey ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist TextView [ i ]. setTextColor ( Context Compat . getColor ( require Context (), ĠR . color . primary Color )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }