/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 4 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . commit 4 5 1 . gitlab . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . View Ċ import Ġcom . commit 4 5 1 . gitlab . R Ċ Ċ class ĠDiv ider Item Decoration ( context : ĠContext ) Ġ: ĠRecyclerView . Item Decoration () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠATTR S Ġ= Ġint ArrayOf ( android . R . attr . list Divider ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdivider : ĠDrawable ĊĠĠĠ Ġprivate Ġval Ġdivider Height : ĠInt Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . divider _ height ) ĊĊĠĠĠ Ġprivate Ġvar Ġshow First Divider Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġval Ġshow Last Divider Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġcontext . obtain Styled Attributes ( ATTR S ) ĊĠĠĠĠĠĠĠ Ġdivider Ġ= Ġa . get Drawable ( 0 ) ĊĠĠĠĠĠĠĠ Ġa . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġfirst : ĠBoolean ) Ġ: Ġthis ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow First Divider Ġ= Ġfirst ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( c : ĠCanvas , Ġparent : ĠRecyclerView , Ġstate : ĠRecyclerView . State ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġdraw Vertical ( c , Ġparent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdraw Vertical ( c : ĠCanvas , Ġparent : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġparent . padding Left ĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġparent . width Ġ- Ġparent . padding Right ĊĠĠĠĠĠĠĠ Ġval Ġchild Count Ġ= Ġparent . child Count ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. child Count Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġparent . getChild At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Skipped ( child , Ġparent )) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġchild ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. layout Params Ġas ĠRecyclerView . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġchild . bottom Ġ+ Ġparams . bottom Margin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġtop Ġ+ Ġdivider Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdivider . setBounds ( left , Ġtop , Ġright , Ġbottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdivider . draw ( c ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Offsets ( out Rect : ĠRect , Ġview : ĠView , Ġparent : ĠRecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate : ĠRecyclerView . State ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Skipped ( view , Ġparent )) Ġreturn ĊĠĠĠĠĠĠĠ Ġout Rect . set ( 0 , Ġ 0 , Ġ 0 , Ġdivider Height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Skipped ( child : ĠView , Ġparent : ĠRecyclerView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġparent . getChild Adapter Position ( child ) ĊĠĠĠĠĠĠĠ Ġ// ĠSkip Ġthe Ġfirst Ġdivider Ġif Ġneeded ĊĠĠĠĠĠĠĠ Ġif Ġ(! show First Divider Ġ&& Ġposition Ġ== Ġ 0 ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠSkip Ġthe Ġlast Ġdivider Ġif Ġneeded ĊĠĠĠĠĠĠĠ Ġif Ġ(! show Last Divider Ġ&& Ġposition Ġ== Ġparent . adapter . item Count Ġ- Ġ 1 ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠOtherwise Ġdon 't Ġskip ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ }