package Ġorg . wikipedia . views Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . Attr Res Ċ import Ġandroidx . appcompat . content . res . AppCompat Resources Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . recyclerview . widget . RecyclerView . Item Decoration Ċ import Ġorg . wikipedia . util . Resource Util Ċ Ċ // Ġtodo : Ġreplace Ġwith ĠDiv ider Item Decoration Ġonce Ġit Ġsupports Ġheaders Ġand Ġfoot ers Ċ class ĠDrawable Item Decoration Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġ@ Attr Res Ġid : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġdraw Start : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġdraw End : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġhorizontal Padding : ĠInt Ġ= Ġ- 1 ) Ġ: ĠItem Decoration () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdrawable : ĠDrawable Ġ= ĠAppCompat Resources . get Drawable ( context , ĠResource Util . get The med Attribute Id ( context , Ġid )) !! ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Offsets ( out Rect : ĠRect , Ġview : ĠView , Ġparent : ĠRecyclerView , Ġstate : ĠRecyclerView . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . getItem Offsets ( out Rect , Ġview , Ġparent , Ġstate ) ĊĠĠĠĠĠĠĠ Ġout Rect . top Ġ= Ġdrawable . intrinsic Height ĊĠĠĠĠĠĠĠ Ġif Ġ( parent . getChild Adapter Position ( view ) Ġ== Ġstate . item Count Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . bottom Ġ= Ġdrawable . intrinsic Height ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas , Ġparent : ĠRecyclerView , Ġstate : ĠRecyclerView . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas , Ġparent , Ġstate ) ĊĠĠĠĠĠĠĠ Ġif Ġ( parent . child Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġend Ġ= Ġparent . child Count Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ( if Ġ( draw Start ) Ġ 0 Ġelse Ġ 1 ) Ġuntil Ġend ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw ( canvas , Ġbounds ( parent , Ġparent . getChild At ( i ), Ġtrue )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdraw ( canvas , Ġbounds ( parent , Ġparent . getChild At ( end ), Ġtrue )) ĊĠĠĠĠĠĠĠ Ġif Ġ( draw End ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw ( canvas , Ġbounds ( parent , Ġparent . getChild At ( end ), Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbounds ( parent : ĠRecyclerView , Ġchild : ĠView , Ġtop : ĠBoolean ): ĠRect Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= Ġparent . layout Manager ĊĠĠĠĠĠĠĠ Ġval Ġbounds Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġbounds . right Ġ= Ġparent . width Ġ- Ġif Ġ( horizontal Padding Ġ!= Ġ- 1 ) Ġhorizontal Padding Ġelse Ġparent . padding Right ĊĠĠĠĠĠĠĠ Ġbounds . left Ġ= Ġif Ġ( horizontal Padding Ġ!= Ġ- 1 ) Ġhorizontal Padding Ġelse Ġparent . padding Left ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġdrawable . intrinsic Height ĊĠĠĠĠĠĠĠ Ġbounds . top Ġ= Ġif Ġ( top ) Ġlayout Manager !!. get Decorated Top ( child ) Ġelse Ġlayout Manager !!. get Decorated Bottom ( child ) Ġ- Ġheight ĊĠĠĠĠĠĠĠ Ġbounds . bottom Ġ= Ġbounds . top Ġ+ Ġheight ĊĠĠĠĠĠĠĠ Ġreturn Ġbounds ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw ( canvas : ĠCanvas , Ġbounds : ĠRect ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdrawable . bounds Ġ= Ġbounds ĊĠĠĠĠĠĠĠ Ġdrawable . draw ( canvas ) ĊĠĠĠ Ġ} Ċ }