package Ġcom . xia oc y dx . cx rv . helper Ċ Ċ import Ġandroid . view . Ch oreo grapher Ċ import Ġandroid . view . Ch oreo grapher . Frame Callback Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . recyclerview . widget . St agger ed Grid LayoutManager Ċ import Ġcom . xia oc y dx . cx rv . internal . do On Pre Draw Ċ Ċ /** Ċ Ġ* Ġ åĪĹè¡¨ æĽ´æĸ° æĹ¶ è°ĥçĶ¨ [ RecyclerView . invalidate Item Decor ations ] çļĦ å¸®åĬ© ç±» Ċ Ġ* Ċ Ġ* Ġ@ author Ġx cc Ċ Ġ* Ġ@ date Ġ 2 0 2 2 / 4 / 2 7 Ċ Ġ*/ Ċ class ĠIn validate Helper Ġ: ĠList Update Helper () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġis Invalid Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval Ġreset Invalid Ġ= ĠReset Invalid () ĊĠĠĠ Ġprivate Ġval Ġis St agger ed : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġrv ?. layout Manager Ġis ĠSt agger ed Grid LayoutManager ĊĠĠĠ Ġprivate Ġval Ġcurrent ItemCount : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġadapter ?. item Count Ġ?: Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Range Changed ( position Start : ĠInt , Ġitem Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnotify Item Range Changed () åı¯ä»¥ çĶ¨äºİ é¦ĸ æ¬¡ æıĴåħ¥ item ï¼Į è¿Ļç§į æĥħåĨµ ä¸į åģļ å¤ĦçĲĨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious ItemCount Ġ== Ġ 0 Ġ-> Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis St agger ed Ġ-> Ġinvalidate Item Decor ations () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Range Inserted ( position Start : ĠInt , Ġitem Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious ItemCount Ġ== Ġ 0 Ġ-> Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis St agger ed Ġ-> Ġinvalidate Item Decor ations () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Start Ġ== Ġcurrent ItemCount Ġ- Ġitem Count Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæı Ĵ åħ¥ åĪ° æľĢåĲİ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Item Decor ations () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Range Moved ( from Position : ĠInt , Ġto Position : ĠInt , Ġitem Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is St agger ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Item Decor ations () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Range Removed ( position Start : ĠInt , Ġitem Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is St agger ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Item Decor ations () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinvalidate Item Decor ations () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrv Ġ= Ġrv Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( is Invalid Ġ|| Ġprevious ItemCount Ġ== Ġ 0 Ġ|| Ġrv . item Decoration Count Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( is St agger ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġåľ¨ ä¸ĭ ä¸Ģ å¸ § rv å¸ĥå±Ģ å®ĮæĪĲ ï¼Į ç Ģ ĳ å¸ĥ æµģ å¸ĥå±Ģ çļĦ span Index åĩĨ ç¡® åĲİ ï¼Į ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æīį è°ĥçĶ¨ invalidate Item Decor ations () çĶ³è¯· ä¸ĭ ä¸Ģ å¸ § ç»ĺ åĪ¶ ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv . do On Pre Draw Ġ{ Ġrv . invalidate Item Decor ations () Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv . invalidate Item Decor ations () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġä¸ĭ ä¸Ģ å¸ § éĩį ç½® is Invalid ĊĠĠĠĠĠĠĠ Ġis Invalid Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠCh oreo grapher . getInstance (). post Frame Callback ( reset Invalid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠReset Invalid Ġ: ĠFrame Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo Frame ( frame Time Nan os : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Invalid Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }