package Ġcom . k iz iton wo se . calendar view . ui Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . annotation . Px Ċ import Ġcom . k iz iton wo se . calendar view . model . Calendar Day Ċ import Ġcom . k iz iton wo se . calendar view . utils . inflate Ċ Ċ data Ġclass ĠDay Config ( ĊĠĠĠ Ġ@ Px Ġval Ġwidth : ĠInt , ĊĠĠĠ Ġ@ Px Ġval Ġheight : ĠInt , ĊĠĠĠ Ġ@ Layout Res Ġval Ġday View Res : ĠInt , ĊĠĠĠ Ġval Ġview Binder : ĠDay Binder < View Container > Ċ ) Ċ Ċ class ĠDay Holder ( private Ġval Ġconfig : ĠDay Config ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdate View : ĠView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontainer View : ĠFrame Layout ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Container : ĠView Container ĊĊĠĠĠ Ġvar Ġday : ĠCalendar Day ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġinf late Day View ( parent : ĠLinearLayout ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġdate View Ġ= Ġparent . inflate ( config . day View Res ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġensure Ġthe Ġlayout Ġparams Ġof Ġthe Ġsupplied Ġchild Ġview Ġis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMATCH _ PARENT Ġso Ġit Ġfill s Ġthe Ġparent Ġcontainer . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= Ġlayout Params . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= ĠViewGroup . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= ĠViewGroup . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcontainer View Ġ= ĠFrame Layout ( parent . context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġwill Ġbe Ġplaced Ġin Ġthe ĠWeek Layout ( A ĠLinearLayout ) Ġhence Ġwe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġuse ĠLinearLayout . LayoutParams Ġand Ġset Ġthe Ġweight Ġappropriately . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġparent 's Ġw ight Sum Ġis Ġalready Ġset Ġto Ġ 7 Ġto Ġac commod ate Ġseven Ġweek Ġdays . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠLinearLayout . LayoutParams ( config . width , Ġconfig . height , Ġ 1 F ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( date View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcontainer View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbind Day View ( current Day : ĠCalendar Day ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . day Ġ= Ġcurrent Day ĊĠĠĠĠĠĠĠ Ġif Ġ(:: view Container . isInitialized . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Container Ġ= Ġconfig . view Binder . create ( date View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġday Hash Ġ= Ġcurrent Day . date . hashCode () ĊĠĠĠĠĠĠĠ Ġif Ġ( container View . id Ġ!= Ġday Hash ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer View . id Ġ= Ġday Hash ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfig . view Binder . bind ( view Container , Ġcurrent Day ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreload View () Ġ{ ĊĠĠĠĠĠĠĠ Ġday ?. let Ġ{ Ġbind Day View ( it ) Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ