package Ġcom . n 2 k sp . expense _ tracker . ui . categories Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . n 2 k sp . expense _ tracker . R Ċ import Ġcom . n 2 k sp . expense _ tracker . data . model . Category Info Model Ċ import Ġcom . n 2 k sp . expense _ tracker . ui . income _ expense . add _ update . Shared Income Expense ViewModel Ċ import Ġkotlinx . android . synt hetic . main . item _ categor is . view .* Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠCategories Adapter Ġ: ĠRecyclerView . Adapter < Categories Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġshared ViewModel : ĠShared Income Expense ViewModel ĊĠĠĠ Ġprivate Ġvar Ġallow Selection : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcategories : ĠMutable List < Category Info Model > ĊĠĠĠ Ġprivate Ġvar Ġlast Category Checked Id Ġ= Ġ- 9 9 ĊĊĠĠĠ Ġfun Ġattach Categories ( categories : ĠMutable List < Category Info Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . categories Ġ= Ġcategories ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( LayoutInflater . from ( parent . context ). inflate ( R . layout . item _ categor is , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcategories . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcategory Ġ= Ġcategories [ position ] ĊĊĠĠĠĠĠĠĠ ĠTim ber . e (" Data Ġcategory Ġ: Ġ$ category ") ĊĠĠĠĠĠĠĠ Ġholder . item View . category ImageView . setImage Resource ( category . category Image ) ĊĠĠĠĠĠĠĠ ĠTim ber . e (" Data Ġcategory ĠAfter ") ĊĠĠĠĠĠĠĠ Ġvar Ġcolor Ġ= ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . context , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . grey _ 6 0 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( category . selected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory . category Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . item View . category ImageView . setColor Filter ( color ) ĊĠĠĠĠĠĠĠ Ġholder . item View . category Text VI ew . setTextColor ( color ) ĊĊĠĠĠĠĠĠĠ Ġholder . item View . category Text VI ew . text Ġ= Ġcategory . category Title ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( allow Selection ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . delete Image Button . visibility Ġ= ĠView . IN VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Position Ġ= Ġholder . adapter Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared ViewModel . category Model ?. value Ġ= Ġcategories [ adapter Position ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠindexOf Ġ= Ġcategories . indexOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCategory Info Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Id Ġ= Ġlast Category Checked Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Color Ġ= Ġ- 9 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Image Ġ= Ġ- 9 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Title Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Type Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adapter Position Ġ!= ĠindexOf ) Ġ{ Ġ// Ġchecks Ġsame Ġitem Ġis Ġclicked , Ġ Ġif Ġitem Ġis Ġdifferent Ġthen Ġit Ġupdated Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategories [ adapter Position ]. selected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Changed ( adapter Position ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( indexOf Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategories [ indexOf ]. selected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Changed ( indexOf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Category Checked Id Ġ= Ġcategories [ adapter Position ]. categoryId ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . delete Image Button . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Allow Selection ( allow Selection : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . allow Selection Ġ= Ġallow Selection ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset ViewModel ( shared ViewModel : ĠShared Income Expense ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . shared ViewModel Ġ= Ġshared ViewModel ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġclass ĠViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ċ Ċ } Ċ