package Ġxyz . sav v am ir zo yan . e pose a . ui . core Ċ Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġxyz . sav v am ir zo yan . e pose a . core . Model Ċ Ċ abstract Ġclass ĠCore Diff Callback < T Ġ: ĠModel . Ui >( ĊĠĠĠ Ġprivate Ġval Ġ_ are Items The Same : Ġ( T , ĠT ) Ġ-> ĠBoolean , Ċ ) Ġ: ĠDiff Util . Callback () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġold List : ĠList < T > Ġ= ĠlistOf () ĊĠĠĠ Ġprivate Ġvar Ġnew List : ĠList < T > Ġ= ĠlistOf () ĊĊĠĠĠ Ġfun Ġupdate Lists ( old List : ĠList < T >, Ġnew List : ĠList < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . old List Ġ= Ġold List ĊĠĠĠĠĠĠĠ Ġthis . new List Ġ= Ġnew List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Old List Size (): ĠInt Ġ= Ġold List . size ĊĊĠĠĠ Ġoverride Ġfun Ġget New List Size (): ĠInt Ġ= Ġnew List . size ĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ Ġold List [ old Item Position ] Ġ== Ġnew List [ new Item Position ] ĊĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ_ are Items The Same ( old List [ old Item Position ], Ġnew List [ new Item Position ]) ĊĠĠĠ Ġ} Ċ }