package Ġdev . band b . design studio . design 1 . task detail Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġdev . band b . design studio . design 1 . R Ċ import Ġdev . band b . design studio . design 1 . common . Task Ċ import Ġdev . band b . design studio . design 1 . common . utils . is Today Ċ import Ġdev . band b . design studio . design 1 . common . utils . is Tom orrow Ċ import Ġdev . band b . design studio . design 1 . databinding . Task Detail Header Item Binding Ċ import Ġdev . band b . design studio . design 1 . databinding . Task Detail Item Binding Ċ import Ġkotlinx . datetime . LocalDate Ċ Ċ class ĠTask Adapter ( private Ġval Ġitems : ĠList < Task Detail Item >) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . task _ detail _ item Ġ-> ĠTask ViewHolder ( Task Detail Item Binding . inflate ( in flater , Ġparent , Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . task _ detail _ header _ item Ġ-> ĠTask Header ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Detail Header Item Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinflater , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" Unknown Ġview Type Ġ$ view Type ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTask ViewHolder Ġ-> Ġholder . bind (( items [ position ] Ġas ĠTask Detail Item . Task Item ). task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTask Header ViewHolder Ġ-> Ġholder . bind (( items [ position ] Ġas ĠTask Detail Item . Task Header Item )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" Unknown ĠviewHolder Ġ$ holder ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġitems . size ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ= Ġitems [ position ]. layout Id Ċ } Ċ Ċ private Ġclass ĠTask ViewHolder ( private Ġval Ġbinding : ĠTask Detail Item Binding ) Ġ: ĊĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠ Ġfun Ġbind ( task : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . task Name . text Ġ= Ġtask . name ĊĠĠĠĠĠĠĠ Ġbinding . task Checked . isChecked Ġ= Ġtask . finished ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTask Header ViewHolder ( private Ġval Ġbinding : ĠTask Detail Header Item Binding ) Ġ: ĊĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠ Ġfun Ġbind ( header Item : ĠTask Detail Item . Task Header Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġheader Item . date ĊĠĠĠĠĠĠĠ Ġbinding . task Date Header . text Ġ= Ġformat Date ( date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat Date ( date : ĠLocalDate ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate . is Today () Ġ-> Ġ" Today " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate . is Tom orrow () Ġ-> Ġ" Tom orrow " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"$ date " ĊĠĠĠĠĠĠĠ Ġ} Ċ } ĊĊ