package Ġcom . int act . news buff . view model Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġandroidx . paging . Live Paged List Builder Ċ import Ġandroidx . paging . Paged List Ċ import Ġcom . int act . news buff . api . News DataSource Factory Ċ import Ġcom . int act . news buff . data . Repository Ċ import Ġcom . int act . news buff . pojo . News DTO Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /** Ċ Ġ* ĠP aged List Ġis Ġcontent - immutable . ĠThis Ġmeans Ġthat , Ġalthough Ġnew Ġcontent Ġcan Ġbe Ġloaded Ċ Ġ* Ġinto Ġan Ġinstance Ġof ĠP aged List , Ġthe Ġloaded Ġitems Ġthemselves Ġcannot Ġchange Ġonce Ġloaded . Ċ Ġ* ĠAs Ġsuch , Ġif Ġcontent Ġin Ġa ĠP aged List Ġupdates , Ġthe ĠP aged ListAdapter Ġobject Ġreceives Ġa Ċ Ġ* Ġcompletely Ġnew ĠP aged List Ġthat Ġcontains Ġthe Ġupdated Ġinformation . Ċ Ġ* Ċ Ġ* ĠPlace holders : ĠIn Ġcases Ġwhere Ġyou Ġwant Ġyour ĠUI Ġto Ġdisplay Ġa Ġlist Ġbefore Ġyour Ġapp Ġhas Ċ Ġ* Ġfinished Ġfetching Ġdata , Ġyou Ġcan Ġshow Ġplaceholder Ġlist Ġitems Ġto Ġyour Ġusers . ĠThe ĠP aged List Ċ Ġ* Ġhandles Ġthis Ġcase Ġby Ġpresent ing Ġthe Ġlist Ġitem Ġdata Ġas Ġnull Ġuntil Ġthe Ġdata Ġis Ġloaded . Ċ Ġ* ĠBy Ġdefault , Ġthe ĠP aging ĠLibrary Ġenables Ġthis Ġplaceholder Ġbehavior . Ċ Ġ*/ Ċ class ĠHome ViewModel ( val Ġrepository : ĠRepository ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠpageSize Ġ= Ġ 2 0 ĊĠĠĠ Ġvar Ġnews List : ĠLive Data < Paged List < News DTO >> ĊĠĠĠ Ġprivate Ġval Ġnews DataSource Factory Ġ= ĠNews DataSource Factory () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠP aged List . Config . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInitial Load Size Hint ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set PageSize ( 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pref etch Distance ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Enable Place holders ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġ// Ġcreating Ġlive Ġpages Ġlist Ġbuilder ĊĠĠĠĠĠĠĠ Ġnews List Ġ= ĠLive Paged List Builder ( news DataSource Factory , Ġconfig ). build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Favorite News ( news DTO : ĠNews DTO ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . insert ( news DTO ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ