package Ġhu . cs ab ap ap . series reminder . ui . adapters Ċ Ċ import Ġandroidx . paging . Paged ListAdapter Ċ import Ġandroid . content . Context Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġhu . cs ab ap ap . series reminder . R Ċ import Ġhu . cs ab ap ap . series reminder . data . db . entities . Grid Item Ċ import Ġhu . cs ab ap ap . series reminder . data . db . entities . Item Ċ import Ġhu . cs ab ap ap . series reminder . data . db . entities . SR Show Ċ import Ġhu . cs ab ap ap . series reminder . databinding . Grid Item Binding Ċ Ċ internal Ġclass ĠGrid Adapter Ġ: ĠP aged ListAdapter < Grid Item < Item >, ĠGrid Adapter . GridView Holder >( GRID _ ITEM _ COMP AR ATOR ) Ġ{ ĊĊĠĠĠ Ġinterface ĠGrid ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Click ( tr akt Id : ĠInt , Ġin Collection : ĠBoolean ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġlistener : ĠGrid ItemClickListener ? Ġ= Ġnull ĊĊĠĠĠ Ġlateinit Ġvar Ġcontext : ĠContext ĊĠĠĠ Ġvar Ġshows : ĠList < Grid Item < Item >> ? Ġ= Ġnull ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠGrid ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgrid Item Ġ= ĠgetItem ( position ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġshow Ġ= Ġgrid Item . show Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġshow . in Collection Ġ= Ġgrid Item . in Collection ĊĠĠĠĠĠĠĠ Ġholder . bind ( show ) ĊĠĠĠĠĠĠĠ Ġholder . setOnClickListener ( View . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Item Click ( show . tr akt Id , Ġshow . in Collection ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠGrid ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġparent . context !! ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠData Binding Util . inflate < Grid Item Binding >( LayoutInflater . from ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . grid _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠGrid ViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinternal Ġclass ĠGrid ViewHolder ( private Ġval Ġlayout Binding : ĠGrid Item Binding ) Ġ: ĠRecyclerView . ViewHolder ( layout Binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( show : ĠSR Show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Binding . show Ġ= Ġshow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Binding . execute Pending Bindings () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset OnClickListener ( listener : ĠView . OnClickListener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener ( listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠGR ID _ ITEM _ COMP AR ATOR Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Grid Item < Item >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠGrid Item < Item >, Ġnew Item : ĠGrid Item < Item >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . show ?. tr akt Id Ġ== Ġnew Item . show ?. tr akt Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠGrid Item < Item >, Ġnew Item : ĠGrid Item < Item >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . show Ġ== Ġnew Item . show ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }