package Ġcom . nan . x arch . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . nan . x arch . R Ċ import Ġcom . nan . x arch . base . list . base . Base Adapter Ċ import Ġcom . nan . x arch . base . list . load more . Load More Adapter Ċ Ċ class ĠGrid Item Decoration ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġ// Ġ åĪĹ æķ° ĊĠĠĠ Ġprivate Ġval Ġspan Count : ĠInt , ĊĠĠĠ Ġ// Ġ åĪĹ éĹ´ è·Ŀ ĊĠĠĠ Ġprivate Ġval Ġitem Gap : ĠInt Ġ= Ġcontext . resources . get Dimension Pixel Offset ( R . dim en . item _ padding ), ĊĠĠĠ Ġ// Ġ åĪ° å±ı å¹ķ å·¦ åı³ çļĦ è¾¹ è·Ŀ ĊĠĠĠ Ġprivate Ġval Ġpadding : ĠInt Ġ= Ġcontext . resources . get Dimension Pixel Offset ( R . dim en . item _ padding ), ĊĠĠĠ Ġ// Ġ è¡Į éĹ´ è·Ŀ ĊĠĠĠ Ġprivate Ġval Ġline Padding : ĠInt Ġ= Ġcontext . resources . get Dimension Pixel Offset ( R . dim en . item _ padding ), Ċ ) Ġ: ĠRecyclerView . Item Decoration () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Offsets ( out Rect : ĠRect , Ġview : ĠView , Ġparent : ĠRecyclerView , Ġstate : ĠRecyclerView . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . getItem Offsets ( out Rect , Ġview , Ġparent , Ġstate ) ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġparent . getChild Adapter Position ( view ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ å¿ħé¡» ä½¿çĶ¨ Grid LayoutManager ĊĠĠĠĠĠĠĠ Ġval Ġgrid LayoutManager Ġ= Ġparent . layout Manager Ġas ĠGrid LayoutManager ĊĊĠĠĠĠĠĠĠ Ġ// Ġä¸į å¯¹ ä¸Ĭ æĭī åĬłè½½ ä½ľ å¤ĦçĲĨ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= Ġparent . adapter Ġas ĠBase Adapter ĊĠĠĠĠĠĠĠ Ġif Ġ( adapter Ġis ĠLoad More Adapter Ġ&& Ġadapter . is Load More ViewData ( position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Grid Item ( adapter , Ġposition )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ç½ĳ æł¼ æł·å¼ı å¤ĦçĲĨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn : ĠInt Ġ= Ġgrid LayoutManager . span Size Lookup . get Span Index ( position , Ġspan Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . left Ġ= Ġif Ġ( column Ġ== Ġ 0 ) Ġpadding Ġelse Ġcolumn Ġ* Ġitem Gap Ġ/ Ġspan Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . right Ġ= Ġif Ġ( column Ġ== Ġspan Count Ġ- Ġ 1 ) Ġpadding Ġelse Ġitem Gap Ġ- Ġ( column Ġ+ Ġ 1 ) Ġ* Ġitem Gap Ġ/ Ġspan Count ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éĢļ æłı æł·å¼ı å¤ĦçĲĨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . left Ġ= Ġpadding ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . right Ġ= Ġpadding ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ ç¬¬ä¸Ģ æĿ¡ å¤ĦçĲĨ ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġ 0 Ġ|| Ġposition Ġ< Ġspan Count Ġ&& Ġis Grid Item ( adapter , Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . top Ġ= Ġline Padding ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ åºķ éĥ¨ å¤ĦçĲĨ ĊĠĠĠĠĠĠĠ Ġout Rect . bottom Ġ= Ġline Padding ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Grid Item ( adapter : ĠRecyclerView . Adapter <* >, Ġposition : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( adapter Ġis ĠBase Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . getView Data ( position )?. is GridView Data () Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }