package Ġio . github . chen fe i 0 9 2 8 . widget . recyclerview . binding Ċ Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . recyclerview . widget . RecyclerView . LayoutManager Ċ import Ġcom . dr ake et . mult it ype . Multi Type Adapter Ċ import Ġio . github . chen fe i 0 9 2 8 . collection . RecyclerView Adapter DataSource Ċ import Ġio . github . chen fe i 0 9 2 8 . widget . recyclerview . adapter . Delegate Adapter Data Observer Ċ import Ġio . github . chen fe i 0 9 2 8 . widget . recyclerview . binding . grid . Base Grid Span RecyclerView Binder Recorder Binding Ċ import Ġio . github . chen fe i 0 9 2 8 . widget . recyclerview . binding . grid . Base Grid Span RecyclerView Binding Ċ Ċ /** Ċ Ġ* Ġä¸º [ RecyclerView ] æıĲä¾Ľ æķ°æį® å¡« åħħ çļĦ view Binding å·¥åħ· ç±» ãĢĤ Ċ Ġ* Ġ çĶ¨äºİ ç®¡çĲĨ éľĢè¦ģ æĺ¾ç¤º çļĦ åİŁå§ĭ æķ°æį® åĴĮ éĢĤ éħį åĻ¨ ï¼Į å¹¶ æıĲä¾Ľ ç®ĢåįķçļĦ æ·»åĬł åĴĮ åĪłéĻ¤ æķ°æį® æĵįä½ľ ï¼Į Ċ Ġ* Ġä¸į æıĲä¾Ľ / è®¾ç½® [ LayoutManager ] ï¼Į å¸ĥå±Ģ æĸ¹å¼ı çĶ± åŃĲ ç±» æĪĸ ä½¿çĶ¨ å¤Ħ è®¾ç½® Ċ Ġ* Ċ Ġ* Ġ å»ºè®® çĶ¨äºİ [ Linear LayoutManager ] æĪĸ åħ¶å®ĥ [ LayoutManager ] ãĢģ æĹł éľĢ ä¸Ģ bean ç±»åŀĭ å¯¹ å¤ļ binder çļĦ åľºæĻ¯ Ċ Ġ* Ċ Ġ* Ġ åħ³äºİ åĲĦ ä¸ª åŃĲ ç±» ä½¿çĶ¨ å»ºè®® ï¼ļ Ċ Ġ* Ġ- Ġ[ Grid LayoutManager ] ãĢģ ä¸Ģ bean ç±»åŀĭ å¯¹ å¤ļ binder Ġ--> Ġ[ Base Grid Span RecyclerView Binder Recorder Binding ] ï¼Ľ Ċ Ġ* Ġ- Ġ[ Grid LayoutManager ] ãĢģ ä¸Ģ bean ç±»åŀĭ å¯¹ ä¸Ģ binder Ġ--> Ġ[ Base Grid Span RecyclerView Binding ] ï¼Ľ Ċ Ġ* Ġ- Ġ[ Linear LayoutManager ] æĪĸ åħ¶å®ĥ [ LayoutManager ] ãĢģ ä¸Ģ bean ç±»åŀĭ å¯¹ å¤ļ binder Ġ--> Ġ[ Base RecyclerView Binder Recorder Binding ] ï¼Ī éľĢ åĪĿå§ĭåĮĸ æĹ¶ è®¾ç½® [ LayoutManager ] ï¼ī ï¼Ľ Ċ Ġ* Ġ- Ġ[ Linear LayoutManager ] æĪĸ åħ¶å®ĥ [ LayoutManager ] ãĢģ ä¸Ģ bean ç±»åŀĭ å¯¹ ä¸Ģ binder Ġ--> Ġ[ Abs RecyclerView Binding ] ï¼Ī éľĢ åĪĿå§ĭåĮĸ æĹ¶ è®¾ç½® [ LayoutManager ] ï¼īãĢĤ Ċ Ġ* Ċ Ġ* Ġ è¿Ľè¡Į é¢Ŀ å¤ĸ æī©å±ķ æĹ¶ ï¼Ī æĶ¯æĮģ åħ¶å®ĥ [ LayoutManager ] ï¼ī çļĦ çĪ¶ ç±» å»ºè®® ï¼ļ Ċ Ġ* Ġ- ĠéľĢè¦ģ æ¯ıä¸ª item æľī é¢Ŀ å¤ĸ å±ŀæĢ§ éħįç½® ãĢģ ä¸Ģ bean ç±»åŀĭ å¯¹ å¤ļ binder Ġ--> Ġ[ Abs RecyclerView Binder Recorder Binding ] ï¼Ľ Ċ Ġ* Ġ- ĠéľĢè¦ģ æ¯ıä¸ª item æľī é¢Ŀ å¤ĸ å±ŀæĢ§ éħįç½® ãĢģ ä¸Ģ bean ç±»åŀĭ å¯¹ ä¸Ģ binder Ġ--> Ġ[ Abs Layout Param RecyclerView Binding ] ï¼Ľ Ċ Ġ* Ġ- Ġ æĹł ä»¥ä¸Ĭ éľĢæ±Ĥ çļĦ åŁºç¡Ģ æī©å±ķ Ġ--> Ġ[ Abs RecyclerView Binding ] ãĢĤ Ċ Ġ*/ Ċ abstract Ġclass ĠAbs RecyclerView Binding ( ĊĠĠĠ Ġcontent View : ĠRecyclerView , Ġlist : ĠMutable List < Any > Ġ= Ġarray ListOf () Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ list : ĠMutable List < Any > Ġ= Ġlist ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ ļ ´ éľ ² ç»Ļ åŃĲ ç±» æŁ¥æī¾ ï¼Į ç¦ģ æŃ¢ çĽ´æİ¥ å¯¹ åħ¶ add ï¼Į ĊĠĠĠĠ Ġ* Ġæ·»åĬł æĵįä½ľ ä½¿çĶ¨ æľ¬ ç±» æıĲä¾Ľ çļĦ [ add Single Item ] ãĢģ[ add List Items ] è¿Ľè¡Į æ·»åĬł æĵįä½ľ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġval Ġlist : ĠList < Any > Ġ= Ġ_ list ĊĠĠĠ Ġprotected Ġval Ġadapter Ġ= ĠMulti Type Adapter (_ list ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(_ list Ġis ĠRecyclerView Adapter DataSource ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ list . adapter Data Observer Ġ= ĠDelegate Adapter Data Observer ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ éĢĤ éħį åĻ¨ ĊĠĠĠĠĠĠĠ Ġcontent View . adapter Ġ= Ġadapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¿½åĬł æķ´ä¸ª éĽĨåĲĪ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġfun Ġ< E Ġ: ĠAny > Ġadd List Items ( position : ĠInt Ġ= Ġlist . size , Ġdata : ĠList < E >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġlist . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ list . addAll ( data ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ list . addAll ( position , Ġdata ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ·»åĬł åįķ ä¸ª çļĦ æĿ¡ çĽ® ï¼Į éĿŀ è§Ĩé¢ĳ æĪĸ éĩĳ åı¥ åĪĹè¡¨ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġitem ĠĠĠĠĠĠĠ Ġ è¦ģ æ·»åĬł çļĦ æĿ¡ çĽ® item ï¼Į åħ¶ ç±»åŀĭ è¦ģ äºĭ åħĪ åľ¨ è¯¥ ç±» åĪĿå§ĭåĮĸ æĸ¹æ³ķ ä¸Ń æ·»åĬł èĩ³ adapter ä¸Ń ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġfun Ġadd Single Item ( position : ĠInt Ġ= Ġlist . size , Ġitem : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġlist . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ list . add ( item ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ list . add ( position , Ġitem ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç§»éĻ¤ æľĢåĲİ åĬłåħ¥ çļĦä¸Ģ é¡¹ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġfun Ġremove Last (): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ_ list . remove At ( list . last Index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ list . clear () ĊĠĠĠ Ġ} Ċ } Ċ