package Ġcom . example . images Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . paging . Page Key ed DataSource Ċ import Ġcom . android . vol ley . Request Ċ import Ġcom . android . vol ley . Response Ċ import Ġcom . android . vol ley . toolbox . String Request Ċ import Ġcom . google . gson . Gson Ċ Ċ enum Ġclass ĠNetwork Status { ĊĠĠĠ ĠLO ADING , ĊĠĠĠ ĠFAILED , ĊĠĠĠ ĠCOMP LETED Ċ } Ċ Ċ class ĠP ix ab ay DataSource ( private Ġval Ġcontext : ĠContext ): ĠPage Key ed DataSource < Int , Photo Entity >() Ġ{ ĊĠĠĠ Ġvar Ġkey Words Ġ= ĠarrayOf (" dog ", Ġ" animal ", Ġ" be auty "," g irl "," flow ers "," young Ġg irl "). random () ĊĠĠĠ Ġprivate Ġvar Ġ_ network Status Ġ= ĠMutable LiveData < Network Status >() ĊĠĠĠ Ġval Ġnetwork Status : ĠLive Data < Network Status > Ġ= Ġ_ network Status ĊĊĠĠĠ Ġoverride Ġfun Ġload Initial ( ĊĠĠĠĠĠĠĠ Ġparams : ĠLoad Initial Params < Int >, ĊĠĠĠĠĠĠĠ Ġcallback : ĠLoad Initial Callback < Int , ĠPhoto Entity > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ network Status . post Value ( Network Status . LOADING ) ĊĠĠĠĠĠĠĠ Ġvar Ġurl Ġ= Ġ" https :// pix ab ay . com / api /? key = 1 6 1 6 6 2 8 9 - 9 4 2 1 7 df edd 1 0 7 2 7 e 3 6 0 4 e 9 1 1 9 & q =${ key Words }& per _ page = 2 0 & page = 1 " ĊĠĠĠĠĠĠĠ ĠString Request ( Request . Method . GET , url , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult List Ġ= ĠGson (). fromJson ( it , Photos Entity :: class . java ). hits . toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( result List , null , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Error Listener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ network Status . post Value ( Network Status . FAILED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVol ley Singleton . getInstance ( context ). request Queue . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload After ( params : ĠLoad Params < Int >, Ġcallback : ĠLoad Callback < Int , ĠPhoto Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ network Status . post Value ( Network Status . LOADING ) ĊĠĠĠĠĠĠĠ Ġvar Ġurl Ġ= Ġ" https :// pix ab ay . com / api /? key = 1 6 1 6 6 2 8 9 - 9 4 2 1 7 df edd 1 0 7 2 7 e 3 6 0 4 e 9 1 1 9 & q =${ key Words }& per _ page = 2 0 & page =${ params . key }" ĊĠĠĠĠĠĠĠ ĠString Request ( Request . Method . GET , url , Response . Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresults Ġ= ĠGson (). fromJson ( it , Photos Entity :: class . java ). hits . toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( results , params . key . plus ( 1 )) ĊĠĠĠĠĠĠĠ Ġ}, Response . Error Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ network Status . post Value ( Network Status . FAILED ) ĊĠĠĠĠĠĠĠ Ġ}). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVol ley Singleton . getInstance ( context ). request Queue . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Before ( params : ĠLoad Params < Int >, Ġcallback : ĠLoad Callback < Int , ĠPhoto Entity >) Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ // class ĠP ix ab ay Data Factory ( private Ġval Ġcontext : ĠContext ): ĠDataSource . Factory < Int , Photo Entity > (){ Ċ // ĠĠĠ Ġoverride Ġfun Ġcreate (): ĠDataSource < Int , ĠPhoto Entity > Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn ĠP ix ab ay DataSource ( context ) Ċ // ĠĠĠ Ġ} Ċ // Ċ //} Ċ // class ĠP ix ab ay DataSource Factory ( private Ġval Ġcontext : ĠContext ): DataSource . Factory < Int , Photo Entity >() Ġ{ Ċ // ĠĠĠ Ġoverride Ġfun Ġcreate (): ĠDataSource < Int , ĠPhoto Entity > Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn ĠP ix ab ay DataSource ( context ) Ċ // ĠĠĠ Ġ} Ċ //} Ċ