package Ġcom . jun pu . pix ab ay gallery . net Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . paging . Page Key ed DataSource Ċ import Ġcom . jun pu . log . L Ċ import Ġcom . jun pu . log . log StackTrace Ċ import Ġcom . jun pu . pix ab ay gallery . bean . Image Bean Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ author Ġj un pu Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 7 / 3 1 Ċ Ġ*/ Ċ class ĠP ix ab ay DataSource ( private Ġval Ġload Status : ĠMutable LiveData < Load Status >) Ġ: ĊĠĠĠ ĠPage Key ed DataSource < Int , ĠImage Bean >() Ġ{ ĊĊĠĠĠ Ġvar Ġretry : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġload Initial ( ĊĠĠĠĠĠĠĠ Ġparams : ĠLoad Initial Params < Int >, ĊĠĠĠĠĠĠĠ Ġcallback : ĠLoad Initial Callback < Int , ĠImage Bean > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġretry Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġload Status . post Value ( Load Status . LOADING _ INITIAL ) ĊĠĠĠĠĠĠĠ ĠVol ley Manager . instance . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ( hash Map Of ( API _ PAGE Ġto Ġ" 1 ")) Ġ{ Ġis Success , Ġresult , Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . vv (" 1 : Ġ${ result ?. total } Ġ/ Ġ${ result ?. total Hits }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Status . post Value ( Load Status . SUCCESS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( result ?. hits Ġ?: Ġempty List (), Ġnull , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġretry Ġ= Ġ{ Ġload Initial ( params , Ġcallback ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Status . post Value ( Load Status . FAILURE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe ?. log StackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload After ( params : ĠLoad Params < Int >, Ġcallback : ĠLoad Callback < Int , ĠImage Bean >) Ġ{ ĊĠĠĠĠĠĠĠ Ġretry Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġload Status . post Value ( Load Status . LOADING ) ĊĠĠĠĠĠĠĠ ĠVol ley Manager . instance . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ( map Of ( API _ PAGE Ġto Ġ"${ params . key } ")) Ġ{ Ġis Success , Ġresult , Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . vv ("${ params . key }: Ġ${ result ?. total } Ġ/ Ġ${ result ?. total Hits }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Status . post Value ( Load Status . SUCCESS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( result ?. hits Ġ?: Ġempty List (), Ġparams . key Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtotal Ġ= Ġresult ?. total Hits Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e . toString () Ġ== Ġ" com . android . vol ley . Client Error ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Status . post Value ( Load Status . COMPLETE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġretry Ġ= Ġ{ Ġload After ( params , Ġcallback ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Status . post Value ( Load Status . FAILURE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe ?. log StackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Before ( params : ĠLoad Params < Int >, Ġcallback : ĠLoad Callback < Int , ĠImage Bean >) Ġ{ ĊĠĠĠ Ġ} Ċ }