/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġandroidx . paging Ċ Ċ import Ġjava . util . ArrayList Ċ Ċ @ Suppress (" DE PREC ATION ") Ċ class ĠTest Item Key ed DataSource < T Ġ: ĠAny >( list : ĠList < T >) Ġ: ĠItem Key ed DataSource < Int , ĠT >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlist : ĠList < T > Ġ= ĠArrayList ( list ) ĊĊĠĠĠ Ġoverride Ġfun Ġload Initial ( params : ĠLoad Initial Params < Int >, Ġcallback : ĠLoad Initial Callback < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtotal Count Ġ= Ġlist . size ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġparams . requested Initial Key Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġsub list Ġ= Ġlist . sub List ( key , Ġmin Of ( key Ġ+ Ġparams . requested Load Size , Ġtotal Count )) ĊĠĠĠĠĠĠĠ Ġcallback . on Result ( sub list ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload After ( params : ĠLoad Params < Int >, Ġcallback : ĠLoad Callback < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback . on Result ( list . sub List ( params . key , Ġparams . key Ġ+ Ġparams . requested Load Size )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Before ( params : ĠLoad Params < Int >, Ġcallback : ĠLoad Callback < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback . on Result ( list . sub List ( params . key Ġ- Ġparams . requested Load Size Ġ+ Ġ 1 , Ġparams . key Ġ+ Ġ 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetKey ( item : ĠT ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . indexOf ( item ) ĊĠĠĠ Ġ} Ċ } Ċ