package Ġcom . in fin um . coll ar . ui . presentation . decor ations Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . in fin um . coll ar . ui . R Ċ import Ġkotlin . math . round ToInt Ċ Ċ internal Ġclass ĠDot Decoration ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġdecoration : ĠDecor ation Ċ ) Ġ: ĠRecyclerView . Item Decoration () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdivider Ġ= ĠContext Compat . get Drawable ( context , ĠR . drawable . coll ar _ decoration _ dot ) ĊĊĠĠĠ Ġ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 Adapter Position ( view ) Ġ!= ĠRecyclerView . NO _ POSITION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( decoration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDecor ation . START Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent . getChild Adapter Position ( view ) Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . top Ġ= Ġdivider ?. intrinsic Height Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDecor ation . END Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent . getChild Adapter Position ( view ) Ġ== Ġstate . item Count Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . bottom Ġ= Ġdivider ?. intrinsic Height Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( c : ĠCanvas , Ġparent : ĠRecyclerView , Ġstate : ĠRecyclerView . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdivider ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent . child Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġget Child ( parent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Ġ= Ġchild . findViewById < View >( R . id . line ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġ((( line . right Ġ- Ġline . left ) Ġ/ Ġ 2 . 0 f Ġ+ Ġline . left ) Ġ- Ġit . intrinsic Width Ġ/ Ġ 2 . 0 f ). round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġleft Ġ+ Ġit . intrinsic Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġget Top Bound ( child , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom : ĠInt Ġ= Ġtop Ġ+ Ġit . intrinsic Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setBounds ( left , Ġtop , Ġright , Ġbottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . draw ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Child ( parent : ĠRecyclerView ): ĠView Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( decoration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDecor ation . START Ġ-> Ġparent . getChild At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDecor ation . END Ġ-> Ġparent . getChild At ( parent . child Count Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Top Bound ( child : ĠView , Ġdivider : ĠDrawable ): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( decoration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDecor ation . START Ġ-> Ġchild . top Ġ- Ġdivider . intrinsic Height ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDecor ation . END Ġ-> Ġchild . bottom ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ