package Ġorg . k oin . sample app . view . result Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġkotlinx . android . synt hetic . main . fragment _ weather _ list .* Ċ import Ġorg . k oin . android . view model . ext . android . viewModel Ċ import Ġorg . k oin . sample app . R Ċ import Ġorg . k oin . sample app . model . Daily Forecast Model Ċ Ċ class ĠResult List Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġweather Result Adapter : ĠResult ListAdapter ĊĊĠĠĠ Ġval ĠTAG Ġ= Ġjava Class . simple Name ĊĊĠĠĠ Ġval Ġmodel : ĠResult ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ weather _ list , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" my Model Ġ: Ġ$ model ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠListen ĠWeather Ġlist ĊĠĠĠĠĠĠĠ Ġmodel . ui Data . observe ( this , Ġandroid . arch . lifecycle . Observer < Result UI Model > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweather List Ġ= Ġit . list ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( weather List Ġ!= Ġweather Result Adapter . list Ġ&& Ġweather List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Weather ( weather List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( it . error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Error ( it . error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBind Ġon Item Clicked Ġwith Ġadapter ĊĠĠĠĠĠĠĠ Ġweather Result Adapter Ġ= ĠResult ListAdapter ( emptyList (), Ġon Item Clicked ()) ĊĠĠĠĠĠĠĠ Ġweather List . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġweather List . adapter Ġ= Ġweather Result Adapter ĊĊĠĠĠĠĠĠĠ Ġmodel . get Weather List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Item Clicked (): Ġ( Daily Forecast Model ) Ġ-> ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ{ Ġweather Detail Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnotify Ġweather Ġto Ġshow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . select Weather Detail ( weather Detail . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdisplay Weather ( weather List : ĠList < Daily Forecast Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġweather Result Adapter . list Ġ= Ġweather List ĊĠĠĠĠĠĠĠ Ġweather Result Adapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdisplay Error ( error : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( weather List , Ġ" Got Ġerror Ġ: Ġ$ error ", ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} Ċ }