package Ġcom . ang cy o . u iv iew . less . recycler . item Ċ Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . text . Text Paint Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . ang cy o . u iv iew . less . recycler . R Base ViewHolder Ċ Ċ /** Ċ Ġ* Ċ Ġ* ĠEmail : ang cy o @ 1 2 6 . com Ċ Ġ* Ġ@ author Ġang cy o Ċ Ġ* Ġ@ date Ġ 2 0 1 9 / 0 5 / 1 7 Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠSh en Z hen ĠO & M ĠCloud ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ class ĠSingle Item Kt Ġ: ĠSingle Item () Ġ{ ĊĊĠĠĠ Ġvar Ġsingle Item Layout Id : ĠInt Ġ= Ġsuper . getItem Layout Id () ĊĊĠĠĠ Ġvar Ġsingle Item Bind : Ġ( holder : ĠR Base ViewHolder , Ġpos In Data : ĠInt , Ġsing Item : ĠSingle Item Kt ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġ_, Ġ_ Ġ-> ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠéľĢè¦ģ æıĴåħ¥ åĪĨ åī² çº¿ çļĦ å¤§å°ı ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġvar Ġitem Top Insert Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġitem Left Insert Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġitem Right Insert Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġitem Bottom Insert Ġ= Ġ 0 ĊĊĠĠĠ Ġvar Ġitem Decoration Color Ġ= ĠColor . WHITE ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä»ħ ç»ĺ åĪ¶ offset çļĦ åĮºåŁŁ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġvar Ġonly Draw Offset Area Ġ= Ġtrue ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĨ åī² çº¿ ç»ĺ åĪ¶ æĹ¶çļĦ åģı ç§» ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġvar Ġitem Top Offset Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġitem Left Offset Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġitem Right Offset Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġitem Bottom Offset Ġ= Ġ 0 ĊĊĠĠĠ Ġfun Ġset Top Insert ( insert : ĠInt , Ġleft Offset : ĠInt Ġ= Ġ 0 , Ġright Offset : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Top Insert Ġ= Ġinsert ĊĠĠĠĠĠĠĠ Ġitem Right Offset Ġ= Ġright Offset ĊĠĠĠĠĠĠĠ Ġitem Left Offset Ġ= Ġleft Offset ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Bottom Insert ( insert : ĠInt , Ġleft Offset : ĠInt Ġ= Ġ 0 , Ġright Offset : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Bottom Insert Ġ= Ġinsert ĊĠĠĠĠĠĠĠ Ġitem Right Offset Ġ= Ġright Offset ĊĠĠĠĠĠĠĠ Ġitem Left Offset Ġ= Ġleft Offset ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Left Insert ( insert : ĠInt , Ġtop Offset : ĠInt Ġ= Ġ 0 , Ġbottom Offset : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Left Insert Ġ= Ġinsert ĊĠĠĠĠĠĠĠ Ġitem Bottom Offset Ġ= Ġbottom Offset ĊĠĠĠĠĠĠĠ Ġitem Top Offset Ġ= Ġtop Offset ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Right Insert ( insert : ĠInt , Ġtop Offset : ĠInt Ġ= Ġ 0 , Ġbottom Offset : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Right Insert Ġ= Ġinsert ĊĠĠĠĠĠĠĠ Ġitem Bottom Offset Ġ= Ġbottom Offset ĊĠĠĠĠĠĠĠ Ġitem Top Offset Ġ= Ġtop Offset ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Item Offsets 2 ( rect : ĠRect , Ġedge : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// super . setItem Offsets 2 ( rect , Ġedge ) ĊĠĠĠĠĠĠĠ Ġrect . set ( item Left Insert , Ġitem Top Insert , Ġitem Right Insert , Ġitem Bottom Insert ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĺ åĪ¶ ä¸įåĲĮ æĸ¹åĲĳ çļĦ åĪĨ åī² çº¿ æĹ¶ , Ġ è§¦åıĳ çļĦ åĽŀè°ĥ , Ġåı¯ä»¥ çĶ¨æĿ¥ è®¾ç½® ä¸įåĲĮ æĸ¹åĲĳ åĪĨ åī² çº¿ çļĦ é¢ľèī² ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġvar Ġeach Draw Item Decoration : Ġ( left : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġ_, Ġ_, Ġ_ Ġ-> ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw ( ĊĠĠĠĠĠĠĠ Ġcanvas : ĠCanvas , ĊĠĠĠĠĠĠĠ Ġpaint : ĠText Paint , ĊĠĠĠĠĠĠĠ ĠitemView : ĠView , ĊĠĠĠĠĠĠĠ Ġoffset Rect : ĠRect , ĊĠĠĠĠĠĠĠ Ġitem Count : ĠInt , ĊĠĠĠĠĠĠĠ Ġposition : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// super . draw ( canvas , Ġpaint , ĠitemView , Ġoffset Rect , Ġitem Count , Ġposition ) ĊĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġitem Decoration Color ĊĠĠĠĠĠĠĠ Ġonly Draw Offset Area Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġeach Draw Item Decoration ( 0 , Ġitem Top Insert , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( item Top Insert Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( only Draw Offset Area ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ å·¦ åı³ åĮºåŁŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Left Offset Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Draw Rect . set ( item View . left , ĠitemView . top Ġ- Ġoffset Rect . top , Ġitem Left Offset , ĠitemView . top ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Draw Rect , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Right Offset Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Draw Rect . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . right Ġ- Ġitem Right Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . top Ġ- Ġoffset Rect . top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . top ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Draw Rect , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Draw Rect . set ( item View . left , ĠitemView . top Ġ- Ġoffset Rect . top , ĠitemView . right , ĠitemView . top ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Draw Rect , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġitem Decoration Color ĊĠĠĠĠĠĠĠ Ġonly Draw Offset Area Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġeach Draw Item Decoration ( 0 , Ġ 0 , Ġ 0 , Ġitem Bottom Insert ) ĊĠĠĠĠĠĠĠ Ġif Ġ( item Bottom Insert Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( only Draw Offset Area ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ å·¦ åı³ åĮºåŁŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Left Offset Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Draw Rect . set ( item View . left , ĠitemView . bottom , Ġitem Left Offset , ĠitemView . bottom Ġ+ Ġoffset Rect . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Draw Rect , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Right Offset Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Draw Rect . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . right Ġ- Ġitem Right Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . bottom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . bottom Ġ+ Ġoffset Rect . bottom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Draw Rect , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Draw Rect . set ( item View . left , ĠitemView . bottom , ĠitemView . right , ĠitemView . bottom Ġ+ Ġoffset Rect . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Draw Rect , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġitem Decoration Color ĊĠĠĠĠĠĠĠ Ġonly Draw Offset Area Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġeach Draw Item Decoration ( item Left Insert , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( item Left Insert Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( only Draw Offset Area ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ ä¸Ĭä¸ĭ åĮºåŁŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Top Offset Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Draw Rect . set ( item View . left Ġ- Ġoffset Rect . left , ĠitemView . top , ĠitemView . left , Ġitem Top Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Draw Rect , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Bottom Offset Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Draw Rect . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . left Ġ- Ġoffset Rect . left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . bottom Ġ- Ġitem Bottom Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . bottom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Draw Rect , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Draw Rect . set ( item View . left Ġ- Ġoffset Rect . left , ĠitemView . top , ĠitemView . left , ĠitemView . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Draw Rect , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġitem Decoration Color ĊĠĠĠĠĠĠĠ Ġonly Draw Offset Area Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġeach Draw Item Decoration ( 0 , Ġ 0 , Ġitem Right Insert , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( item Right Insert Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( only Draw Offset Area ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ ä¸Ĭä¸ĭ åĮºåŁŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Top Offset Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Draw Rect . set ( item View . right , ĠitemView . top , ĠitemView . right Ġ+ Ġoffset Rect . right , Ġitem Top Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Draw Rect , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Bottom Offset Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Draw Rect . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . bottom Ġ- Ġitem Bottom Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . right Ġ+ Ġoffset Rect . right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . bottom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Draw Rect , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Draw Rect . set ( item View . right , ĠitemView . top , ĠitemView . right Ġ+ Ġoffset Rect . right , ĠitemView . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Draw Rect , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Layout Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsingle Item Layout Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Item View ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . create Item View ( parent , Ġview Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon BindView ( holder : ĠR Base ViewHolder , Ġpos In Data : ĠInt , Ġitem Data Bean : ĠItem ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on BindView ( holder , Ġpos In Data , Ġitem Data Bean ) ĊĠĠĠĠĠĠĠ Ġsingle Item Bind ( holder , Ġpos In Data , Ġthis ) ĊĠĠĠ Ġ} Ċ }