package Ġcom . ma je ur . p sc lient . util . recyclerview Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġkotlin . math . round ToInt Ċ Ċ open Ġclass ĠDiv ider Item Decoration ( context : ĠContext ) Ġ: ĠRecyclerView . Item Decoration () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbounds Ġ= ĠRect () ĊĠĠĠ Ġprivate Ġval Ġdivider : ĠDrawable ? ĊĠĠĠ Ġvar Ġstart Offset Ġ= Ġ 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġcontext . obtain Styled Attributes ( int ArrayOf ( android . R . attr . list Divider )) ĊĠĠĠĠĠĠĠ Ġdivider Ġ= Ġa . get Drawable ( 0 ) ĊĠĠĠĠĠĠĠ Ġa . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas , Ġparent : ĠRecyclerView , Ġstate : ĠRecyclerView . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( parent . layout Manager Ġ== Ġnull Ġ|| Ġparent . adapter Ġ== Ġnull Ġ|| Ġdivider Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcanvas . save () ĊĠĠĠĠĠĠĠ Ġval Ġleft : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġright : ĠInt ĊĠĠĠĠĠĠĠ Ġ// no inspection ĠAndroid Lint New Api Ġ- ĠNew Api Ġlint Ġfails Ġto Ġhandle Ġoverrides . ĊĠĠĠĠĠĠĠ Ġif Ġ( parent . clip To Padding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġparent . padding Left ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġparent . width Ġ- Ġparent . padding Right ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . clip Rect ( left , Ġparent . padding Top , Ġright , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . height Ġ- Ġparent . padding Bottom ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġparent . width ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġchild Count Ġ= Ġparent . child Count ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġparent . getChild At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! should Draw Divider ( parent , Ġchild )) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . get Decorated Bounds With Margins ( child , Ġbounds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġbounds . top Ġ+ Ġchild . translation Y . round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġtop Ġ+ Ġdivider . intrinsic Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdivider . setBounds ( left Ġ+ Ġstart Offset , Ġtop , Ġright , Ġbottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdivider . draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcanvas . restore () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġshould Draw Divider ( parent : ĠRecyclerView , Ġchild : ĠView ) Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Offsets ( out Rect : ĠRect , Ġview : ĠView , Ġparent : ĠRecyclerView , Ġstate : ĠRecyclerView . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( divider Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠ Ġout Rect . set ( 0 , Ġdivider . intrinsic Height , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġ} Ċ Ċ }