package Ġcom . example . ret rofit cy rpt om oney app . View ĊĊ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . ret rofit cy rpt om oney app . Adapter . RecyclerView Adapter Ċ import Ġcom . example . ret rofit cy rpt om oney app . Model . Crypto Model Ċ import Ġcom . example . ret rofit cy rpt om oney app . R Ċ import Ġcom . example . ret rofit cy rpt om oney app . Service . Crypto API Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . adapter . rx java 2 . Rx Java 2 Call Adapter Factory Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ, RecyclerView Adapter . Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠBASE _ URL Ġ= Ġ" https :// api . nom ics . com / v 1 /" ĊĠĠĠ Ġprivate Ġvar Ġcrypto Models Ġ: ĠArrayList < Crypto Model > Ġ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cyclerView Adapter Ġ: ĠRecyclerView Adapter ĊĊĠĠĠ Ġ// Disposable ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcomposite Disposable Ġ: ĠComposite Disposable ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĠĠĠĠĠĠĠ Ġ// RecyclerView ĊĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ: ĠRecyclerView . LayoutManager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġlayout Manager ĊĊĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġretrofit Object Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (). create ( Crypto API :: class . java ) ĊĠĠĠĠĠĠĠ Ġcomposite Disposable ?. add ( ret rofit Object . getData () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( this :: handle Response )) ĊĊ ĊĠĠĠĠĠĠĠĠ Ġ/* Ġval Ġservice Ġ= Ġretrofit Object . create ( Crypto API Ġ:: Ġclass . java ) ĊĊĠĠĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġservice . getData () ĊĠĠĠĠĠĠĠĠ Ġcall . enqueue ( object Ġ: ĠCallback < List < Crypto Model >> { ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < List < Crypto Model >>, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < List < Crypto Model >>, Ġresponse : ĠResponse < List < Crypto Model >>) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( response . is Successful ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . body ()?. let Ġ{ Ġ// not Ġnull Ġcoming ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrypto Models Ġ= ĠArrayList ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* for ( crypto Model Ġ: ĠCrypto Model Ġin Ġcrypto Models !! ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( crypto Model . currency ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( crypto Model . price ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrypto Models ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView Adapter Ġ= ĠRecyclerView Adapter ( it , this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġre cyclerView Adapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġ}) */ ĊĠĠĠ Ġ} ĊĠĠĠĠ Ġprivate Ġfun Ġhandle Response ( crypto List : ĠList < Crypto Model >) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġcrypto Models Ġ= ĠArrayList ( crypto List ) ĊĠĠĠĠĠĠĠĠ Ġcrypto Models ?. let { ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView Adapter Ġ= ĠRecyclerView Adapter ( it , this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġre cyclerView Adapter ĊĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( crypto Model : ĠCrypto Model ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this ," Clicked Ġ: Ġ+ Ġ${ crypto Model . currency }", Toast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . clear () ĊĠĠĠ Ġ} Ċ }