package Ġcom . lifecycle . binding . adapter . recycler Ċ Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġcom . lifecycle . binding . inter . inflate . Diff ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġapple Ġon Ġ 2 0 1 7 / 7 / 2 8 . Ċ Ġ*/ Ċ Ċ class ĠDiff Util Callback < E Ġ: ĠDiff >( ĊĠĠĠ Ġprivate Ġval Ġold List : ĠList < E >, ĊĠĠĠ Ġprivate Ġval Ġnew List : ĠList < E > Ċ ) Ġ: ĠDiff Util . Callback () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Old List Size (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget New List Size (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnew List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( old Item Position Ġin Ġold List . indices && new Item Position Ġin Ġnew List . indices ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Item Ġ= Ġold List [ old Item Position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Item Ġ= Ġnew List [ new Item Position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . key () Ġ== Ġnew Item . key () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item Position Ġin Ġold List . indices && new Item Position Ġin Ġnew List . indices && ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew List [ new Item Position ]. value ()== old List [ old Item Position ]. value () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Change Payload ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(( old Item Position Ġ! in Ġold List . indices )|| Ġnew Item Position Ġ! in Ġnew List . indices ) null ĊĠĠĠĠĠĠĠ Ġelse Ġif ( old List [ old Item Position ]. value () Ġ== Ġnew List [ new Item Position ]. value ()) Ġnull ĊĠĠĠĠĠĠĠ Ġelse Ġnew List [ new Item Position ] ĊĠĠĠ Ġ} Ċ }