package Ġcom . fo st ium s . sea app . ui . home Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget .* Ċ import Ġandroidx . core . content . res . Resources Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . fo st ium s . sea app . R Ċ import Ġcom . fo st ium s . sea app . databinding . Fragment Home Binding Ċ import Ġcom . fo st ium s . sea app . repository . Product Ċ Ċ import Ġcom . fo st ium s . sea app . ui . home . adapter . Re kom end asi GridView Adapter Ċ Ċ import Ġcom . fo st ium s . sea app . ui . home . models . K ategori Carousel Model Ċ import Ġcom . fo st ium s . sea app . ui . home . widgets . Expand able GridView Ċ import Ġcom . fo st ium s . sea app . ui . product . Product Page Ċ import Ġcom . fo st ium s . sea app . ui . product . adapter . Product Grid Adapter Ċ Ċ import Ġcom . j ama . carousel view . Carousel View Ċ import Ġcom . j ama . carousel view . enums . Indicator Animation Type Ċ import Ġcom . j ama . carousel view . enums . Offset Type ĊĊ Ċ class ĠHome Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġhome ViewModel : ĠHome ViewModel ĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Home Binding ? Ġ= Ġnull ĊĊĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , container : ĠViewGroup ?, savedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġhome ViewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Provider ( this ). get ( Home ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Home Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĊĊ ĊĠĠĠĠĠĠĠ Ġval Ġfake Data Promotion Ġ= Ġarray ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . prom osi _ cont oh , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . prom osi _ cont oh , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . prom osi _ cont oh , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . prom osi _ cont oh , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . prom osi _ cont oh , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġk ategori Product Ġ= Ġarray ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK ategori Carousel Model ( R . drawable . kategori _ ikan ," I kan "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK ategori Carousel Model ( R . drawable . ker ang ," Ker ang "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK ategori Carousel Model ( R . drawable . r ump ut ," R ump ut ĠL aut "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK ategori Carousel Model ( R . drawable . kategori _ ikan ," Ud ang "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK ategori Carousel Model ( R . drawable . kategori _ ikan ," G aram ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġinit ViewPager Carousel Promotion ( fake Data Promotion ) ĊĠĠĠĠĠĠĠ Ġinit ViewPager Carousel Category ( kategori Product ) ĊĠĠĠĠĠĠĠ Ġinit Re kom end asi Product GridView () ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ViewPager Carousel Promotion ( data : ĠArrayList < Int > ){ ĊĊĊĠĠĠĠĠĠĠ Ġval Ġcarousel View Ġ= Ġbinding . root . findViewById < Carousel View >( R . id . carousel View Promotion ) ĊĠĠĠĠĠĠĠ Ġcarousel View . set Padding ( 2 0 , 0 , 0 , 0 ) ĊĠĠĠĠĠĠĠ Ġcarousel View . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġdata . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauto Play Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Ġ= ĠR . layout . center _ carousel _ item _ promotion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Animation Type Ġ= ĠIndicator Animation Type . SL IDE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcarousel Offset Ġ= ĠOffset Type . START ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Carousel View Listener Ġ{ Ġview , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= Ġview . findViewById < ImageView >( R . id . imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setImage Drawable ( Resources Compat . get Drawable ( resources , Ġdata [ position ], Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ViewPager Carousel Category ( data : ĠArrayList < K ategori Carousel Model > ){ ĊĊĠĠĠĠĠĠĠ Ġval Ġcarousel View Ġ= Ġbinding . root . findViewById < Carousel View >( R . id . carousel View Category ) ĊĠĠĠĠĠĠĠ Ġcarousel View . set Padding ( 2 0 , 0 , 0 , 0 ) ĊĠĠĠĠĠĠĠ Ġcarousel View . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġdata . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauto Play Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Ġ= ĠR . layout . center _ carousel _ item _ category ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Animation Type Ġ= ĠIndicator Animation Type . NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Indicator ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcarousel Offset Ġ= ĠOffset Type . START ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Carousel View Listener Ġ{ Ġview , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= Ġview . findViewById < ImageView >( R . id . imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= Ġview . findViewById < TextView >( R . id . textView K ategori Item Carousel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setImage Drawable ( Resources Compat . get Drawable ( resources , Ġdata [ position ]. image , Ġnull )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġdata [ position ]. kategori ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgoto Product Page Ġ= ĠIntent ( context , ĠProduct Page :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoto Product Page . putExtra (" K ATEG OR I ", Ġdata [ position ]. kategori ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( goto Product Page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Re kom end asi Product GridView () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġgrid View Ġ= Ġbinding . root . findViewById < Expand able GridView >( R . id . product grid view ) ĊĊĠĠĠĠĠĠĠ ĠProduct ( context ). getAll Product ( 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġdata Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain Adapter Ġ= Ġcontext ?. let Ġ{ ĠProduct Grid Adapter ( it , data . data ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid View . adapter Ġ= Ġmain Adapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" F ERR R ", Ġ" init Grid Product : Ġ", Ġerror ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgrid View . on ItemClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġ_, Ġ_, Ġposition , Ġ_ Ġ-> ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }