/* Ċ Ġ* ĠDesign ed Ġand Ġdeveloped Ġby ĠD am ian Ġvan Ġden ĠB erg . Ċ Ġ* Ċ Ġ* Ġ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 . dv db . material checklist . recycler . chip container . holder Ċ Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . dv db . material checklist . recycler . base . holder . Base Recycler Holder Ċ import Ġcom . dv db . material checklist . recycler . base . holder . Base Recycler Holder Factory Ċ import Ġcom . dv db . material checklist . recycler . chip container . model . Chip Container Recycler Holder Config Ċ import Ġcom . dv db . material checklist . recycler . chip container . model . Chip Container Recycler Item Ċ import Ġcom . dv db . material checklist . recycler . chip container . model . Chip Recycler Item Ċ import Ġcom . dv db . material checklist . util . get Drawable Compat Ċ import Ġcom . dv db . material checklist . util . update Padding Ċ import Ġcom . google . android . material . chip . Chip Ċ import Ġcom . google . android . material . chip . Chip Group Ċ Ċ internal Ġclass ĠCh ip Container Recycler Holder Ġprivate Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġchip Group : ĠCh ip Group , ĊĠĠĠ Ġconfig : ĠCh ip Container Recycler Holder Config , ĊĠĠĠ Ġprivate Ġval Ġon Item Clicked : Ġ( item : ĠCh ip Recycler Item ) Ġ-> ĠUnit , ĊĠĠĠ Ġprivate Ġval Ġon Item Long Clicked : Ġ( item : ĠCh ip Recycler Item ) Ġ-> ĠBoolean Ċ ) Ġ: ĠBase Recycler Holder < Chip Container Recycler Item , ĠCh ip Container Recycler Holder Config >( ĊĠĠĠ Ġchip Group , ĊĠĠĠ Ġconfig Ċ ) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinitialise Chip Group () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind View ( item : ĠCh ip Container Recycler Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . items . size Ġ!= Ġchip Group . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip Group . removeAll Views () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . items . forEach Ġ{ Ġchip Item Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip Group . addView ( create Chip ( chip Item )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchip Group . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchip Ġ= Ġchip Group . getChild At ( i ) Ġas ? ĠCh ip ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . items . get OrNull ( i )?. let Ġ{ Ġchip Item Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip ?. bind Item ( chip Item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate Top And Bottom Padding () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Config Updated () Ġ{ ĊĠĠĠĠĠĠĠ Ġinitialise Chip Group () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchip Group . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchip Ġ= Ġchip Group . getChild At ( i ) Ġas ? ĠCh ip ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip ?. update Appearance () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Chip ( chip Item : ĠCh ip Recycler Item ): ĠCh ip Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchip Ġ= ĠCh ip ( chip Group . context ) ĊĊĠĠĠĠĠĠĠ Ġchip . bind Item ( chip Item ) ĊĠĠĠĠĠĠĠ Ġchip . update Appearance () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġchip ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠCh ip . bind Item ( chip Item : ĠCh ip Recycler Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġchip Item . text ĊĊĠĠĠĠĠĠĠ Ġif Ġ( chip Item . icon Res Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip Icon Ġ= Ġchip Group . context . get Drawable Compat ( chip Item . icon Res ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip Icon Tint Ġ= ĠColor State List . valueOf ( config . icon Tint Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Clicked ( chip Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset On Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Long Clicked ( chip Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠCh ip . update Appearance () Ġ{ ĊĠĠĠĠĠĠĠ Ġtype face Ġ= Ġconfig . text Type Face ĊĠĠĠĠĠĠĠ Ġset TextColor ( config . textColor ) ĊĊĠĠĠĠĠĠĠ Ġset Text Size ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTyped Value . COMPLEX _ UNIT _ PX , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . text Size ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġchip Icon Size Ġ= Ġconfig . icon Size ĊĊĠĠĠĠĠĠĠ Ġconfig . icon End Padding ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon End Padding Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconfig . backgroundColor ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip BackgroundColor Ġ= ĠColor State List . valueOf ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconfig . stroke Color ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip Stroke Color Ġ= ĠColor State List . valueOf ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconfig . stroke Width ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip Stroke Width Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġchip Start Padding Ġ= Ġconfig . left And Right Internal Padding ĊĠĠĠĠĠĠĠ Ġchip End Padding Ġ= Ġconfig . left And Right Internal Padding ĊĊĠĠĠĠĠĠĠ Ġchip Min Height Ġ= Ġconfig . min Height ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialise Chip Group () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġleft And Right Padding Ġ= Ġconfig . left And Right Padding . toInt () ĊĊĠĠĠĠĠĠĠ Ġchip Group . update Padding ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġleft And Right Padding , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġleft And Right Padding , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġchip Group . chip Spacing Horizontal Ġ= Ġconfig . horizontal Spacing ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Top And Bottom Padding () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtop And Bottom Padding Ġ= Ġif Ġ( chip Group . child Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . top And Bottom Padding . toInt () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( chip Group . padding Top Ġ!= Ġtop And Bottom Padding Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip Group . padding Bottom Ġ!= Ġtop And Bottom Padding ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip Group . update Padding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġtop And Bottom Padding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġtop And Bottom Padding , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠFactory ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġon Item Clicked : Ġ( item : ĠCh ip Recycler Item ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġon Item Long Clicked : Ġ( item : ĠCh ip Recycler Item ) Ġ-> ĠBoolean ĊĠĠĠ Ġ) Ġ: ĠBase Recycler Holder Factory < Chip Container Recycler Item , ĠCh ip Container Recycler Holder Config > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent : ĠViewGroup , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig : ĠCh ip Container Recycler Holder Config ĊĠĠĠĠĠĠĠ Ġ): ĠBase Recycler Holder < Chip Container Recycler Item , ĠCh ip Container Recycler Holder Config > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCh ip Container Recycler Holder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCh ip Group ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Clicked , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Long Clicked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }