/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 ĠGoogle ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . example . android . stock room Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġkotlinx . android . synt hetic . main . group view _ item . view . group ItemName Ċ import Ġkotlinx . android . synt hetic . main . group view _ item . view . text ViewGroup Delete Ċ Ċ data Ġclass ĠGroup Data ( ĊĠ Ġvar Ġcolor : ĠInt , ĊĠ Ġval Ġname : ĠString , ĊĠ Ġval Ġstats : ĠInt Ċ ) Ċ Ċ class ĠUpdate Group Adapter Ġinternal Ġconstructor ( ĊĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠ Ġprivate Ġval Ġclick Listener Update : Ġ( GroupData ) Ġ-> ĠUnit , ĊĠ Ġprivate Ġval Ġclick Listener Delete : Ġ( GroupData ) Ġ-> ĠUnit Ċ ) Ġ: ĠRecyclerView . Adapter < Update Group Adapter . Update Group ViewHolder >() Ġ{ ĊĊĠ Ġprivate Ġval Ġinflater : ĠLayoutInflater Ġ= ĠLayoutInflater . from ( context ) ĊĠ Ġprivate Ġvar Ġgroup List : ĠList < Group > Ġ= Ġempty List () ĊĠ Ġprivate Ġvar Ġstock DB data List : ĠList < Stock DB data > Ġ= Ġempty List () ĊĠ Ġprivate Ġvar Ġgroup D atal ist : ĠList < GroupData > Ġ= Ġempty List () ĊĊĠ Ġinner Ġclass ĠUpdate Group ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠ Ġfun Ġbind Update ( ĊĠĠĠĠĠ Ġgroup : ĠGroup Data , ĊĠĠĠĠĠ Ġclick Listener Update : Ġ( GroupData ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ ĠitemView . group ItemName . setOnClickListener Ġ{ Ġclick Listener Update ( group ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbind Delete ( ĊĠĠĠĠĠ Ġgroup : ĠGroup Data , ĊĠĠĠĠĠ Ġclick Listener Delete : Ġ( GroupData ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ ĠitemView . text ViewGroup Delete . setOnClickListener Ġ{ Ġclick Listener Delete ( group ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġgroup ItemName : ĠTextView Ġ= ĠitemView . findViewById ( R . id . group ItemName ) ĊĠĠĠ Ġval Ġgroup Item Stats : ĠTextView Ġ= ĠitemView . findViewById ( R . id . group Item Stats ) ĊĠĠĠ Ġval Ġgroup ItemGroup : ĠTextView Ġ= ĠitemView . findViewById ( R . id . group ItemGroup ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate ViewHolder ( ĊĠĠĠ Ġparent : ĠViewGroup , ĊĠĠĠ Ġview Type : ĠInt ĊĠ Ġ): ĠUpdate Group ViewHolder Ġ{ ĊĠĠĠ Ġval ĠitemView Ġ= Ġinflater . inflate ( R . layout . group view _ item , Ġparent , Ġfalse ) ĊĠĠĠ Ġreturn ĠUpdate Group ViewHolder ( item View ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Bind ViewHolder ( ĊĠĠĠ Ġholder : ĠUpdate Group ViewHolder , ĊĠĠĠ Ġposition : ĠInt ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġcurrent : ĠGroup Data Ġ= Ġgroup D atal ist [ position ] ĊĊĠĠĠ Ġholder . bind Update ( current , Ġclick Listener Update ) ĊĠĠĠ Ġholder . bind Delete ( current , Ġclick Listener Delete ) ĊĊĠĠĠ Ġholder . group ItemName . text Ġ= Ġcurrent . name ĊĠĠĠ Ġholder . group Item Stats . text Ġ= Ġ"[ ${ current . stats }] " ĊĊĠĠĠ Ġvar Ġcolor Ġ= Ġcurrent . color ĊĠĠĠ Ġif Ġ( color Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġcolor Ġ= Ġcontext . getColor ( R . color . background List Color ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġset BackgroundColor ( holder . group ItemGroup , Ġcolor ) ĊĊĠĠĠ Ġval Ġbackground Ġ= ĠTyped Value () ĊĠĠĠ Ġcontext . theme . resolve Attribute ( android . R . attr . selectable Item Background , Ġbackground , Ġtrue ) ĊĠĠĠ Ġholder . group ItemName . setBackground Resource ( background . resourceId ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġmerge Data () Ġ{ ĊĠĠĠ Ġgroup D atal ist Ġ= Ġgroup List . map Ġ{ Ġgroup Ġ-> ĊĠĠĠĠĠ Ġval Ġstats Ġ= Ġstock DB data List . count Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠ Ġitem . group Color Ġ== Ġgroup . color ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠGroup Data ( color Ġ= Ġgroup . color , Ġname Ġ= Ġgroup . name , Ġstats Ġ= Ġstats ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġinternal Ġfun Ġadd Groups ( groups : ĠList < Group >) Ġ{ ĊĠĠĠ Ġgroup List Ġ= Ġgroups . sorted By Ġ{ Ġgroup Ġ-> ĊĠĠĠĠĠ Ġgroup . name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġmerge Data () ĊĠĠĠ Ġnotify DataSet Changed () ĊĠ Ġ} ĊĊĠ Ġfun Ġupdate Data ( items : ĠList < Stock DB data >) Ġ{ ĊĠĠĠ Ġstock DB data List Ġ= Ġitems ĊĊĠĠĠ Ġmerge Data () ĊĠĠĠ Ġnotify DataSet Changed () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġgroup List . size Ċ } Ċ