package Ġio . g ri px tech . od oo json rp cc lient . core . utils . recycler . decorators Ċ Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ class ĠGrid Item Decorator ( ĊĠĠĠ Ġprivate Ġval Ġsize Grid Spacing Px : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġgrid Size : ĠInt Ċ ) Ġ: ĠRecyclerView . Item Decoration () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġneed Left Spacing Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Offsets ( out Rect : ĠRect , Ġview : ĠView , Ġparent : ĠRecyclerView , Ġstate : ĠRecyclerView . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġframe Width : ĠInt Ġ= Ġ(( parent . width Ġ- Ġsize Grid Spacing Px . toFloat () Ġ* Ġ( grid Size Ġ- Ġ 1 )) Ġ/ Ġgrid Size ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġpadding : ĠInt Ġ= Ġparent . width Ġ/ Ġgrid Size Ġ- Ġframe Width ĊĠĠĠĠĠĠĠ Ġval Ġitem Position : ĠInt Ġ= Ġ( view . layout Params Ġas ĠRecyclerView . LayoutParams ). view Adapter Position ĊĠĠĠĠĠĠĠ Ġif Ġ( item Position Ġ< Ġgrid Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . top Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . top Ġ= Ġsize Grid Spacing Px ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( item Position Ġ% Ġgrid Size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . left Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . right Ġ= Ġpadding ĊĠĠĠĠĠĠĠĠĠĠĠ Ġneed Left Spacing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( item Position Ġ+ Ġ 1 ) Ġ% Ġgrid Size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġneed Left Spacing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . right Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . left Ġ= Ġpadding ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( need Left Spacing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġneed Left Spacing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . left Ġ= Ġsize Grid Spacing Px Ġ- Ġpadding ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( item Position Ġ+ Ġ 2 ) Ġ% Ġgrid Size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . right Ġ= Ġsize Grid Spacing Px Ġ- Ġpadding ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . right Ġ= Ġsize Grid Spacing Px Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( item Position Ġ+ Ġ 2 ) Ġ% Ġgrid Size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġneed Left Spacing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . left Ġ= Ġsize Grid Spacing Px Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . right Ġ= Ġsize Grid Spacing Px Ġ- Ġpadding ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġneed Left Spacing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . left Ġ= Ġsize Grid Spacing Px Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . right Ġ= Ġsize Grid Spacing Px Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġout Rect . bottom Ġ= Ġ 0 ĊĠĠĠ Ġ} Ċ }