package Ġdev . k xx cn . mar u . view . notice Ċ Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġdev . k xx cn . mar u . data . Notice Ċ import Ġdev . k xx cn . mar u . view . base . Lifecycle Adapter Ċ import Ġdev . k xx cn . mar u . view . notice . Notice Adapter . Notice Item Ċ Ċ class ĠNotice Adapter Ġ: ĠLifecycle Adapter < Notice Item , ĠRecyclerView . ViewHolder >( Notice Diff Callback ()) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ EMPTY Ġ-> ĠNotice Empty ViewHolder . from ( parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠNotice ViewHolder . from ( parent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( holder Ġis ĠNotice ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotice Ġ= ĠgetItem ( position ). notice Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre le as able . add ( holder . bind ( notice , Ġis Expand ( position ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetItem ( position ). type ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Current List Changed ( ĊĠĠĠĠĠĠĠ Ġprevious List : ĠMutable List < Notice Item >, ĊĠĠĠĠĠĠĠ Ġcurrent List : ĠMutable List < Notice Item > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Current List Changed ( previous List , Ġcurrent List ) ĊĠĠĠĠĠĠĠ Ġexpand able . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Expand ( pos : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġexpand able [ pos ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput ( pos : ĠInt , Ġis Expand : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexpand able . put ( pos , Ġis Expand ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ EMPTY Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ VIEW Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠNotice Item ( val Ġtype : ĠInt , Ġval Ġnotice : ĠNotice ?) Ċ } Ċ Ċ class ĠNotice Diff Callback Ġ: ĠDiff Util . Item Callback < Notice Item >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( ĊĠĠĠĠĠĠĠ Ġold Item : ĠNotice Item , ĊĠĠĠĠĠĠĠ Ġnew Item : ĠNotice Item ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item . notice ?. subject Ġ== Ġnew Item . notice ?. subject ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( ĊĠĠĠĠĠĠĠ Ġold Item : ĠNotice Item , ĊĠĠĠĠĠĠĠ Ġnew Item : ĠNotice Item ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠ Ġ} Ċ } Ċ