/** Ċ Ġ* ĠDesign ed Ġand Ġdeveloped Ġby ĠA id an ĠFol le st ad Ġ(@ af ol le st ad ) Ċ Ġ* Ċ Ġ* Ġ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 . af ol le st ad . date . data Ċ Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . af ol le st ad . date . data . snapshot . Month Snapshot Ċ Ċ /** ĠThe Ġdate Ġof Ġan Ġempty Ġdate , Ġa Ġplaceholder Ġin Ġthe Ġgraph . Ġ*/ Ċ internal Ġconst Ġval ĠNO _ DATE : ĠInt Ġ= Ġ- 1 Ċ Ċ /** Ġ@ author ĠA id an ĠFol le st ad Ġ(@ af ol le st ad ) Ġ*/ Ċ internal Ġsealed Ġclass ĠMonth Item Ġ{ ĊĊĠ Ġ/** Ġ@ author ĠA id an ĠFol le st ad Ġ(@ af ol le st ad ) Ġ*/ ĊĠ Ġinternal Ġdata Ġclass ĠWeek Header ( ĊĠĠĠ Ġval Ġday OfWeek : ĠDay OfWeek ĊĠ Ġ) Ġ: ĠMonth Item () ĊĊĠ Ġ/** Ġ@ author ĠA id an ĠFol le st ad Ġ(@ af ol le st ad ) Ġ*/ ĊĠ Ġinternal Ġdata Ġclass ĠDay OfMonth ( ĊĠĠĠ Ġval Ġday OfWeek : ĠDay OfWeek , ĊĠĠĠ Ġval Ġmonth : ĠMonth Snapshot , ĊĠĠĠ Ġval Ġdate : ĠInt Ġ= ĠNO _ DATE , ĊĠĠĠ Ġval Ġis Selected : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġval Ġis Today : ĠBoolean Ġ= Ġfalse ĊĠ Ġ) Ġ: ĠMonth Item () ĊĊĠ Ġinternal Ġdata Ġclass ĠWeek ( ĊĠĠĠ Ġval Ġweek Number : ĠInt ĊĠ Ġ) Ġ: ĠMonth Item () Ċ } Ċ Ċ /** Ġ@ author ĠA id an ĠFol le st ad Ġ(@ af ol le st ad ) Ġ*/ Ċ internal Ġfun ĠList < Month Item > ?. apply Diff To ( ĊĠ Ġwith New Days : ĠList < Month Item > ?, ĊĠ Ġadapter : ĠRecyclerView . Adapter < *> Ċ ) Ġ{ ĊĠ Ġif Ġ( this Ġ== Ġnull Ġ|| Ġwith New Days Ġ== Ġnull ) Ġ{ ĊĠĠĠ Ġadapter . notify DataSet Changed () ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġval Ġdiff Result Ġ= ĠDiff Util . calculate Diff ( ĊĠĠĠĠĠĠĠ ĠMonth Item Callback ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Items Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Items Ġ= Ġwith New Days ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġdiff Result . dispatch Updates To ( adapter ) ĊĠ Ġ} Ċ } Ċ