/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 Ġ- Ġpresent ĠIn structure , ĠInc . Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* Ġthe ĠFree ĠSoftware ĠFoundation , Ġversion Ġ 3 Ġof Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ Ġ* Ġalong Ġwith Ġthis Ġprogram . Ġ ĠIf Ġnot , Ġsee Ġ< http :// www . gnu . org / licenses />. Ċ Ġ*/ Ċ Ċ package Ġcom . in structure . p anda utils . features . element ary . schedule Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . databinding . library . base Adapters . BR Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . in structure . p anda utils . adapters . item decor ations . Sticky Header Interface Ċ import Ġcom . in structure . p anda utils . adapters . item decor ations . Sticky Header Item Decoration Ċ import Ġcom . in structure . p anda utils . binding . Bind able RecyclerView Adapter Ċ import Ġcom . in structure . p anda utils . databinding . Item Schedule Day Header Binding Ċ import Ġcom . in structure . p anda utils . features . element ary . schedule . item view models . Schedule Day Group Item ViewModel Ċ Ċ class ĠSchedule RecyclerView Adapter Ġ: ĠBind able RecyclerView Adapter (), ĠSt icky Header Interface Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To RecyclerView ( re cyclerView : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attached To RecyclerView ( re cyclerView ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . addItem Decoration ( Sticky Header Item Decoration ( this )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Header Position For Item ( item Position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠstartPosition Ġ= Ġitem Position ĊĠĠĠĠĠĠĠ Ġvar Ġheader Position Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Header ( start Position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Position Ġ= ĠstartPosition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartPosition Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( start Position Ġ>= Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġheader Position ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Header Binding ( ĊĠĠĠĠĠĠĠ Ġheader Position : ĠInt , ĊĠĠĠĠĠĠĠ Ġparent : ĠRecyclerView , ĊĠĠĠĠĠĠĠ Ġhas Child In Contact : ĠBoolean ĊĠĠĠ Ġ): ĠView Data Binding Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠItem Schedule Day Header Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . set Variable ( BR . item ViewModel , Ġitem ViewModels [ header Position ]) ĊĠĠĠĠĠĠĠ Ġbinding . has Divider Ġ= Ġhas Child In Contact ĊĠĠĠĠĠĠĠ Ġbinding . invalidate All () ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Header ( item Position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( item Position Ġ== ĠRecyclerView . NO _ POSITION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem ViewModels [ item Position ] Ġis ĠSchedule Day Group Item ViewModel ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }