package Ġcom . gif ft . core . api . recycler Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġkotlin . reflect . K Property 1 Ċ Ċ /** Ċ Ġ* ĠUsage : Ċ Ġ* Ġ``` Ċ Ġ* ĠProperty Diff Callback ( Ċ Ġ* ĠĠĠĠ Ġidentity Property Ġ= ĠYour Class :: id , Ċ Ġ* ĠĠĠĠ Ġcontent Properties Ġ= Ġsequence Of ( Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠYour Class :: date , Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠYour Class :: sender , Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠYour Class :: text Ċ Ġ* ĠĠĠĠ Ġ) Ċ Ġ* Ġ) Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ class ĠProperty Diff Callback < T >( ĊĠĠĠ Ġprivate Ġval Ġidentity Properties : ĠSequence < K Property 1 < T , Ġ* >>, ĊĠĠĠ Ġprivate Ġval Ġcontent Properties : ĠSequence < K Property 1 < T , Ġ* >> Ċ ) Ġ: ĠDiff Util . Item Callback < T >() Ġ{ ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġidentity Property : ĠK Property 1 < T , Ġ* >, ĊĠĠĠĠĠĠĠ Ġcontent Properties : ĠSequence < K Property 1 < T , Ġ* >> ĊĠĠĠ Ġ) Ġ: Ġthis ( sequence Of ( identity Property ), Ġcontent Properties ) ĊĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠT , Ġnew Item : ĠT ) Ġ= ĊĠĠĠĠĠĠĠ Ġidentity Properties . all Ġ{ Ġit . get ( old Item ) Ġ== Ġit . get ( new Item ) Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Diff Util Equals ") ĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠT , Ġnew Item : ĠT ) Ġ= ĊĠĠĠĠĠĠĠ Ġcontent Properties . all Ġ{ Ġit . get ( old Item ) Ġ== Ġit . get ( new Item ) Ġ} Ċ } Ċ