/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 Ġ- Ġ 2 0 2 0 ĠB rian ĠW ern ick Ċ Ġ* Ċ Ġ* Ġ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 . dev br ackets . android . recycler ext . decoration . header Ċ Ċ import Ġandroid . graphics . PointF Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . dev br ackets . android . recycler ext . adapter . header . Header Api Ċ Ċ class ĠSt icky Header Ġ{ ĊĠ Ġprotected Ġvar Ġsticky ViewHolder : ĠRecyclerView . ViewHolder ? Ġ= Ġnull ĊĠ Ġprotected Ġvar Ġcached Sticky View : ĠView ? Ġ= Ġnull ĊĊĠ Ġvar Ġsticky View Offset Ġ= ĠPoint F ( 0 F , Ġ 0 F ) ĊĠ Ġvar Ġcurrent Sticky Id Ġ= ĠRecyclerView . NO _ ID ĊĊĠ Ġfun Ġreset () Ġ{ ĊĠĠĠ Ġupdate ( RecyclerView . NO _ ID , Ġnull ) ĊĠĠĠ Ġsticky View Offset . x Ġ= Ġ 0 f ĊĠĠĠ Ġsticky View Offset . y Ġ= Ġ 0 f ĊĠ Ġ} ĊĊĠ Ġfun Ġupdate ( sticky Id : ĠLong , Ġholder : ĠRecyclerView . ViewHolder ?) Ġ{ ĊĠĠĠ Ġsticky ViewHolder Ġ= Ġholder ĊĠĠĠ Ġcached Sticky View Ġ= Ġnull ĊĠĠĠ Ġcurrent Sticky Id Ġ= Ġsticky Id ĊĠ Ġ} ĊĊĠ Ġfun Ġget Sticky View ( header Api : ĠHeader Api < *, Ġ* >): ĠView ? Ġ{ ĊĠĠĠ Ġif Ġ( cached Sticky View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġcached Sticky View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġholder Ġ= Ġsticky ViewHolder Ġ?: Ġreturn Ġnull ĊĊĠĠĠ Ġ// ĠIf Ġwe Ġhave Ġa ĠViewHolder Ġwe Ġshould Ġhave Ġa Ġview , Ġbut Ġjust Ġto Ġbe Ġsafe Ġwe Ġcheck ĊĠĠĠ Ġval Ġsticky View Id Ġ= Ġheader Api . custom Sticky Header View Id ĊĠĠĠ Ġcached Sticky View Ġ= Ġif Ġ( sticky View Id Ġ!= Ġ 0 ) Ġholder . item View . findViewById ( sticky View Id ) Ġelse Ġholder . item View ĊĠĠĠ Ġreturn Ġcached Sticky View ĊĠ Ġ} Ċ }