package Ġcom . example . android task . view model Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . example . android task . interfaces . CallBack Interface Ċ import Ġcom . example . android task . model . Repo Model Ċ import Ġcom . example . android task . repository . WebRequest Ok Http 3 Ċ import Ġcom . google . gson . Gson Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONException Ċ import Ġjava . util .* Ċ Ċ class ĠRepo ViewModel Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġval Ġrepo List Ġ= ĊĠĠĠĠĠĠĠ ĠMutable LiveData < List < Repo Model >>() ĊĠĠĠ Ġval Ġ_ error Msg Ġ= ĠMutable LiveData < String >() ĊĊĠĠĠ Ġfun Ġget Repo Data ( m Link : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠWeb Request Ok Http 3 ( m Link !! , Ġobject Ġ: ĠCall Back Interface Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon CallBack Result ( json Array : ĠJSONArray ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollect Objects ( json Array ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon CallBack Failed ( error Msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ error Msg . post Value ( error Msg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcollect Objects ( json Array : ĠJSONArray ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrepo Models : ĠMutable List < Repo Model > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġif Ġ( json Array Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġjson Array . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepo Model Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGson (). fromJson ( json Array [ i ]. toString (), ĠRepo Model :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Models . add ( repo Model ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( repo Models . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo List . post Value ( repo Models ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }