package Ġcom . g arp ix . universal . decor ations Ċ Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ /** Ċ Ġ* ĠProvides Ġfor Ġadding Ġvertical Ġmargins Ġfor Ġitems Ġin Ġre cycler view Ċ Ġ* Ċ Ġ* Ġ@ param Ġview Type Ġis Ġview Type Ġof Ġcurrent Ġitem Ċ Ġ* Ġ@ param Ġinner Divider Ġis Ġdivider Ġbetween Ġitems Ġof Ġthe Ġsame Ġview Type Ċ Ġ* Ġ@ param Ġouter Divider Ġis Ġdivider Ġbetween Ġitems Ġof Ġthe Ġdifferent Ġview Type Ċ Ġ*/ Ċ Ċ class ĠVertical Item Decoration ( ĊĠĠĠ Ġprivate Ġval Ġview Type : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġinner Divider : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġouter Divider : ĠInt , Ċ ) Ġ: ĠRecyclerView . Item Decoration () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Offsets ( ĊĠĠĠĠĠĠĠ Ġout Rect : ĠRect , ĊĠĠĠĠĠĠĠ Ġview : ĠView , ĊĠĠĠĠĠĠĠ Ġparent : ĠRecyclerView , ĊĠĠĠĠĠĠĠ Ġstate : ĠRecyclerView . State ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . getItem Offsets ( out Rect , Ġview , Ġparent , Ġstate ) ĊĠĠĠĠĠĠĠ Ġif Ġ( parent . getChild ViewHolder ( view ). item ViewType Ġ!= Ġview Type ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= Ġparent . adapter Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Position Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . getChild Adapter Position ( view ). take If Ġ{ Ġit Ġ!= ĠRecyclerView . NO _ POSITION Ġ} Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġis Prev Target View Ġ= Ġadapter . is Prev Target View ( current Position , Ġview Type ) ĊĠĠĠĠĠĠĠ Ġval Ġis Next Target View Ġ= Ġadapter . is Next Target View ( current Position , Ġview Type ) ĊĊĠĠĠĠĠĠĠ Ġval Ġone Side Inner Divider Ġ= Ġinner Divider Ġ/ Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġwith ( out Rect ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġif Ġ( is Prev Target View ) Ġone Side Inner Divider Ġelse Ġouter Divider ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġif Ġ( is Next Target View ) Ġone Side Inner Divider Ġelse Ġouter Divider ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġif Ġthe Ġprevious Ġitem Ġhas Ġthe Ġsame Ġview Type ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcurrent Position Ġposition Ġof Ġcurrent Ġitem Ġin ĠRecyclerView ĊĠĠĠĠ Ġ* Ġ@ param Ġview Type Ġis Ġview Type Ġof Ġcurrent Ġitem ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġboolean Ġresult Ġof Ġcomparing ĠView Types Ġwith Ġthe Ġprevious Ġitem Ġin Ġthe Ġlist ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġprivate Ġfun ĠRecyclerView . Adapter <* >. is Prev Target View ( ĊĠĠĠĠĠĠĠ Ġcurrent Position : ĠInt , ĊĠĠĠĠĠĠĠ Ġview Type : ĠInt ĊĠĠĠ Ġ) Ġ= Ġcurrent Position Ġ!= Ġ 0 Ġ&& ĠgetItem ViewType ( current Position Ġ- Ġ 1 ) Ġ== Ġview Type ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġif Ġthe Ġnext Ġitem Ġhas Ġthe Ġsame Ġview Type ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcurrent Position Ġposition Ġof Ġcurrent Ġitem Ġin ĠRecyclerView ĊĠĠĠĠ Ġ* Ġ@ param Ġview Type Ġis Ġview Type Ġof Ġcurrent Ġitem ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġboolean Ġresult Ġof Ġcomparing ĠView Types Ġwith Ġthe Ġnext Ġitem Ġin Ġthe Ġlist ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġprivate Ġfun ĠRecyclerView . Adapter <* >. is Next Target View ( ĊĠĠĠĠĠĠĠ Ġcurrent Position : ĠInt , ĊĠĠĠĠĠĠĠ Ġview Type : ĠInt ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast Index Ġ= Ġitem Count Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Position Ġ!= Ġlast Index Ġ&& ĠgetItem ViewType ( current Position Ġ+ Ġ 1 ) Ġ== Ġview Type ĊĠĠĠ Ġ} Ċ Ċ }