/* Ċ Ġ* ĠCopyright Ġ( c ) ĠMicrosoft ĠCorporation . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠMIT ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . microsoft . office u if abric . list item Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . support . v 7 . widget . Divider Item Decoration Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . View Ċ import Ġcom . microsoft . office u if abric . view . Base Divider Item Decoration Ċ import Ġkotlin . math . ceil Ċ Ċ /** Ċ Ġ* ĠThis Ġ[ Divider Item Decoration ] Ġis Ġdesigned Ġto Ġbe Ġused Ġwith Ġ[ RecyclerView ] s Ġcontaining Ġ[ ListItem View ] s . Ċ Ġ* Ġ[ ListItem Divider ] Ġwill Ġhave Ġan Ġinset Ġmatching Ġthe Ġtext Ġviews ' Ġinset , Ċ Ġ* Ġwhich Ġincreases Ġat Ġthe Ġstart Ġof Ġthe Ġlist Ġitem Ġview Ġwhen Ġa Ġ[ ListItem View . custom View ] Ġis Ġpresent . Ċ Ġ* ĠDiv iders Ġafter Ġ[ List Sub Header View ] s Ġare Ġremoved . Ċ Ġ* ĠIf Ġyour Ġview Ġhas Ġmultiple Ġ[ List Sub Header View ] s , Ġthis Ġclass Ġdraw s Ġa Ġsection Ġdivider Ġwith Ġno Ġinset Ċ Ġ* Ġbetween Ġthe Ġlast Ġlist Ġitem Ġview Ġin Ġthe Ġsection Ġand Ġnext Ġsection 's Ġsub Ġheader Ġview . Ċ Ġ*/ Ċ class ĠListItem Divider ( context : ĠContext , Ġorientation : ĠInt ) Ġ: ĠBase Divider Item Decoration ( context , Ġorientation ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetItem Offsets ( out Rect : ĠRect , Ġview : ĠView , Ġparent : ĠRecyclerView , Ġstate : ĠRecyclerView . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Position Ġ= Ġparent . getChild Adapter Position ( view ) ĊĠĠĠĠĠĠĠ Ġval Ġprevious View Ġ= Ġparent . getChild At ( view Position Ġ- Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġout Rect . top Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Position Ġ== Ġ 0 Ġ&& Ġview Ġis ĠList Sub Header View Ġ-> Ġsub Header Divider Padding . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġis ĠList Sub Header View Ġ-> Ġ(( sub Header Divider Padding Ġ* Ġ 2 ) Ġ+ Ġdivider Height ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious View Ġis ĠList Sub Header View Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġceil ( divider Height ). toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġout Rect . bottom Ġ= Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas , Ġparent : ĠRecyclerView , Ġstate : ĠRecyclerView . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( list Item Index Ġin Ġ 1 Ġuntil Ġparent . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= Ġparent . getChild At ( list Item Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Item View Ġ= ĠitemView Ġas ? ĠListItem View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious View Ġ= Ġparent . getChild At ( list Item Index Ġ- Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSub Headers Ġhave Ġno Ġdiv iders . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( previous View Ġis ĠList Sub Header View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuse Section Divider Ġ= ĠitemView Ġis ĠList Sub Header View ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsp acer Left Ġ= ĠitemView . left . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsp acer Right Ġ= ĠitemView . right . toFloat () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Of Divider Ġ= Ġif Ġ( use Section Divider ) Ġ 0 f Ġelse Ġlist Item View ?. textArea Start Inset Ġ?: Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Of Divider Ġ= ĠitemView . right Ġ- Ġif Ġ( use Section Divider ) Ġ 0 f Ġelse Ġlist Item View ?. textArea End Inset Ġ?: Ġ 0 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Section Divider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Top Spacer ( canvas , ĠitemView , Ġsp acer Left , Ġsp acer Right ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Divider ( canvas , ĠitemView , Ġleft Of Divider , Ġright Of Divider , Ġuse Section Divider ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Section Divider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Bottom Spacer ( canvas , ĠitemView , Ġsp acer Left , Ġsp acer Right ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }