package Ġcom . example . app mv vm . model . repository . impl Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . example . app mv vm . model . repository . Countries Repository Ċ import Ġcom . example . app mv vm . model . repository . api . Reference Country Service Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Response Ċ import Ġcom . example . app mv vm . model . repository . models . Country Ċ import Ġretrofit 2 . Callback Ċ Ċ class ĠCount ries Repository Impl Ġ: ĠCount ries Repository Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcountries Ġ= ĠMutable LiveData < List < Country >>() ĊĊĠĠĠ Ġoverride Ġfun Ġget Countries () Ġ= Ġcountries ĊĊĠĠĠ Ġoverride Ġfun Ġcall Countries API () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcountries List : ĠArrayList < Country >? Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġapi Adapter Ġ= ĠReference Country Service () ĊĠĠĠĠĠĠĠ Ġval Ġapi Service Ġ= Ġapi Adapter . getClient Service () ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġapi Service . list Countries () ĊĊĠĠĠĠĠĠĠ Ġcall . enqueue ( object Ġ: ĠCallback < List < Country >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < List < Country >>, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . stack Trace ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < List < Country >>, Ġresponse : ĠResponse < List < Country >>) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . body ()?. forEach Ġ{ Ġcountry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountries List ?. add ( country ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountries . value Ġ= Ġcountries List ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ Ċ }