package Ġcom . github . ain ul . tw is dev . ui . main . view . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . github . ain ul . tw is dev . ui . main . view . adapter . listener . Grid Item Listener Ċ import Ġcom . github . ain ul . tw is dev . databinding . Grid Item Layout Binding Ċ import Ġcom . github . ain ul . tw is dev . data . model . Item Model Ċ import Ġcom . github . ain ul . tw is dev . util . Constants . IMG _ URL Ċ Ċ class ĠGrid Item Adapter ( private Ġval Ġcontext : ĠContext , Ġprivate Ġval Ġlistener : ĠGrid Item Listener ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Grid Item Adapter . Grid Item ViewHolder >() Ġ{ ĊĊĠĠĠ Ġvar Ġdata : ĠList < Item Model > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠGrid Item ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠGrid Item Layout Binding . inflate ( in flater ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠGrid Item ViewHolder ( view , Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠGrid Item ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( data [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġdata . size ĊĊĠĠĠ Ġclass ĠGrid Item ViewHolder ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠGrid Item Layout Binding , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlistener : ĠGrid Item Listener ĊĠĠĠ Ġ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠBind Ġdata Ġ[ Item Model ] Ġto Ġxml Ġinstead Ġof Ġassign Ġthe Ġvalue Ġmanually , ĊĠĠĠĠĠĠĠĠ Ġ* Ġexcept Ġfew Ġcomponents Ġthat Ġneed Ġto Ġshow Ġdifferently Ġbased Ġon Ġthe Ġdata ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( data : ĠItem Model ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . data Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshow Ġthumbnail Ġif Ġthere 's Ġone , Ġotherwise Ġclear Ġimage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . thumbnail . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg lide Ġ= ĠG lide . with ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath : ĠString Ġ= ĠI MG _ URL Ġ+ Ġdata . default Photo . img Path ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data . default Photo . img Path . isNotBlank ()) Ġg lide . load ( path ). into ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġg lide . clear ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhal al Stamp Ġproduct Ġfilter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . hal al Stamp . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= Ġif Ġ( data . is Hal al Ġ== Ġ" 1 ") ĠView . VISIBLE Ġelse ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadd Ġitem Ġto Ġcart ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . addItem To Cart ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }