package Ġcom . example . android . v 2 . adapters Ċ Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . android . v 2 . R Ċ import Ġcom . example . android . v 2 . data . cart . Cart DB Ċ import Ġcom . example . android . v 2 . data . cart . Database Helper Ċ import Ġcom . example . android . v 2 . models . product . Product From Firebase Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġkotlinx . android . synt hetic . main . card _ view _ product _ grid _ item . view .* Ċ import Ġjava . text . Decimal Format Ċ Ċ class ĠProducts Adapter ( ĊĠĠĠ Ġprivate Ġval Ġproducts List : ĠArrayList < Product From Firebase >, ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext Ċ ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Products Adapter . Product Detail ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdatabase Helper : ĠDatabase Helper Ġ= ĠDatabase Helper ( context , Ġnull ) ĊĠĠĠ Ġvar Ġon Item Click : Ġ(( Product From Firebase ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠProduct Detail ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . card _ view _ product _ grid _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠProduct Detail ViewHolder ( item View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠProduct Detail ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproduct Ġ= Ġproducts List [ position ] ĊĠĠĠĠĠĠĠ Ġholder . setData ( product ) ĊĠĠĠĠĠĠĠ Ġholder . addTo Cart . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġsave Product To Cart ( product ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġmsg , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġproducts List . size ĊĊĠĠĠ Ġprivate Ġfun Ġsave Product To Cart ( product : ĠProduct From Firebase ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġdatabase Helper . readable Database ĊĠĠĠĠĠĠĠ Ġval Ġmessage : ĠString ? ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġdb . raw Query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġ* ĠFROM Ġ${ Cart DB . Product Entry . TABLE _ NAME } Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" WHERE Ġ_ id Ġ= Ġ'${ product . id }' ", Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġmessage Ġ= Ġif Ġ( cursor . count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( Cart DB . Product Entry . COLUMN _ ID , Ġproduct . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( Cart DB . Product Entry . COLUMN _ NAME , Ġproduct . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( Cart DB . Product Entry . COLUMN _ PRICE , Ġproduct . price ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( Cart DB . Product Entry . COLUMN _ QU ANT ITY , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( Cart DB . Product Entry . COLUMN _ TOTAL , Ġproduct . price ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( Cart DB . Product Entry . COLUMN _ CATEGORY , Ġproduct . category ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( Cart DB . Product Entry . COLUMN _ IMAGE _ URL , Ġproduct . image URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . insert ( Cart DB . Product Entry . TABLE _ NAME , Ġnull , Ġvalues ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ÄĲ Ã£ Ġth Ãªm ĠvÃł o Ġgi á» ı Ġh Ãłng Ġth Ãłnh ĠcÃ´ng !" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ" B áº¡n ĠÄĳ Ã£ Ġth Ãªm Ġs áº£n Ġph áº© m Ġn Ãły ĠvÃł o Ġgi á» ı Ġh Ãłng Ġr á»ĵ i !" ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmessage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠProduct Detail ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠaddTo Cart : ĠImageView Ġ= ĠitemView . i V AddTo Cart ĊĊĠĠĠĠĠĠĠ Ġfun ĠsetData ( product From Firebase : ĠProduct From Firebase ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . tx v ProductName . text Ġ= Ġproduct From Firebase . name ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . tx v Product Price . text Ġ= ĠDecimal Format ("# , ### . ## ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( product From Firebase . price ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get (). load ( product From Firebase . image URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. resize ( 3 0 0 , Ġ 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( item View . iv Product ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Click ?. invoke ( products List [ adapter Position ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }