package Ġcom . example . my application . presentation . fragments Ċ Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . demo ss . paginator render kit . view . adapter . Paginator Adapter Ċ import Ġcom . demo ss . paginator render kit . view . adapter . Paginator Diff Item Callback Factory Ċ import Ġcom . demo ss . paginator render kit . view . adapter . delegate . Paginator Adapter Delegate Factory Ċ import Ġcom . demo ss . paginator render kit . view . delegate . Paginator View Delegate Ċ import Ġcom . example . my application . R Ċ import Ġcom . example . my application . base . Base Fragment Ċ import Ġcom . example . my application . domain . model . Article Ċ import Ġkotlinx . android . synt hetic . main . fragment _ news _ empty _ progress .* Ċ import Ġorg . k oin . android . view model . ext . android . viewModel Ċ Ċ class ĠNews Fragment Ġ: ĠBase Fragment < News ViewModel >() Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" com . example . my application . presentation . fragments . News Fragment " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġlayout ResourceId : ĠInt Ġ= ĠR . layout . fragment _ news _ empty _ progress ĊĠĠĠ Ġoverride Ġval ĠviewModel Ġby ĠviewModel < News ViewModel >() ĊĊĠĠĠ Ġprivate Ġval Ġpag inator Delegate Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠPag inator View Delegate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel :: refresh , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPag inator Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel :: load Next Page , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPag inator Diff Item Callback Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġold Item : ĠAny , Ġnew Item : ĠAny Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Item Ġis ĠArticle Ġ&& Ġnew Item Ġis ĠArticle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . url Ġ== Ġnew Item . url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item Ġis ĠArticles Header Ġ&& Ġnew Item Ġis ĠArticles Header ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġold Item : ĠAny , Ġnew Item : ĠAny Ġ-> ĠAny () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// //////////////////////////////////////////////////////////////////////// / ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadapter Ġdeleg ates ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// //////////////////////////////////////////////////////////////////////// / ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPag inator Adapter Delegate Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ article ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĠArticle VH ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPag inator Adapter Delegate Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ articles _ header ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĠArticles Header VH ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpv Articles ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġobserve ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . paginator State . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpag inator Delegate . render ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . restart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop Ob serve ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . paginator State . remove Observer s ( this ) ĊĠĠĠ Ġ} Ċ }