package Ġcom . jul ive . adapter _ demo . sorted Ċ Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . jul ive . adapter . anim ators . first Animation Ċ import Ġcom . jul ive . adapter . anim ators . update Animation Ċ import Ġcom . jul ive . adapter . core .* Ċ import Ġcom . jul ive . adapter . sorted . Sort edList Adapter Ċ import Ġcom . jul ive . adapter . sorted . Sorted Model Ċ import Ġcom . jul ive . adapter _ demo . R Ċ import Ġkotlin . random . Random Ċ Ċ /** Ċ Ġ* ĠModel Ċ Ġ* Ġ// Ġ æī©å±ķ Diff Model Ġ Ġ åħ¼ å®¹ Diff Util Ċ Ġ*/ Ċ data Ġclass ĠModel Test ( var Ġtitle : ĠString , Ġvar Ġsub Title : ĠString ) Ġ: ĠSame Model Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠSame Model > Ġget Change Payload ( new Item : ĠT ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġunique Id : ĠString Ġ= Ġtitle Ċ } Ċ Ċ data Ġclass ĠModel Video Test ( val Ġurl : String , val Ġurl 2 : String , var Ġseek On Start : Long ) Ċ Ċ /** Ċ Ġ* Ġsorted Id Ġ æİĴåºı çĶ¨ Ċ Ġ* Ġtitle Ġ ä½ľä¸º unique Id Ġï¼Į RecyclerView ĠItem View ĠæĽ´æĸ° çļĦæĹ¶åĢĻ ï¼Į åĶ¯ä¸Ģ åĢ¼ ï¼Į æ³¨æĦı åĪĹè¡¨ æĺ¯ åı¯ä»¥ åĩºçİ° ä¸Ģæł· çļĦ unique Id çļĦ ï¼Į Ċ Ġ* Ġå¦Ĥæŀľ æĥ³ æĽ´æĸ° è¯· è°ĥçĶ¨ Adapter Ġupdate Item Ġ è¿Ļæł· æīįèĥ½ ä¿Ŀè¯ģ åĪĹè¡¨ ä¸Ń unique Id åĶ¯ä¸Ģ Ċ Ġ*/ Ċ data Ġclass ĠSorted Model Test ( ĊĠĠĠ Ġval Ġsorted Id : ĠInt , Ġvar Ġtitle : ĠString , Ġvar Ġsub Title : ĠString , ĊĠĠĠ Ġoverride Ġvar Ġunique Id : ĠString Ġ= Ġtitle Ċ ) Ġ: ĠSorted Model Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠSorted Model > Ġcompare ( model : ĠT ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sorted Id Ġ> Ġ( model Ġas ? ĠSorted Model Test )?. sorted Id Ġ?: Ġ 0 ) Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( sorted Id Ġ< Ġ( model Ġas ? ĠSorted Model Test )?. sorted Id Ġ?: Ġ 0 ) Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠSorted Item ViewModel Test Ġ: ĠLayout ViewModel < Sorted Model Test >( R . layout . item _ test _ 2 ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠonCreate ViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvm Ġ= Ġget ViewModel < Sorted Item ViewModel Test >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvm ?. model ?. sub Title Ġ= Ġ" åĪ·æĸ° èĩªå·± ${ Random . nextInt ( 1 0 0 )}" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Adapter < Sort edList Adapter >() ?. set ( adapter Position , Ġvm ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon View Attached To Window Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Animation ( R . anim . item _ animation _ from _ bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind VH ( view Holder : ĠDefault ViewHolder , Ġpayload s : ĠList < Any >) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewHolder . getView < TextView >( R . id . tv _ title ). text Ġ= Ġmodel ?. title ĊĠĠĠĠĠĠĠ ĠviewHolder . getView < TextView >( R . id . tv _ sub Title ). text Ġ= Ġmodel ?. sub Title ĊĠĠĠ Ġ} Ċ }