package Ġph . com . pan ah on . fragments Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġph . com . pan ah on .* Ċ import Ġjava . time . LocalDate ĊĊ Ċ class ĠFore cast Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġdegree Unit Code : ĠInt Ġ= Ġ 0 Ġ// Initialize Ġonly Ġto Ġ 0 , Ġ 0 Ġhas Ġno Ġsignific ance Ġvalue . ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġweather : ĠWeather ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcommunic ator : ĠCom municator ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrv Forecast s Ġ: ĠRecyclerView ĊĊĠĠĠ Ġ// ĠSTORAGE ĠFOR ĠAPI ĠDATA ĊĠĠĠ Ġprivate Ġvar Ġforecast s Ġ: ĠArrayList < Forecast > Ġ= ĠArrayList () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDuring Ġon Pause , Ġthe ĠCom municator Ġretrieves Ġthe Ġcurrent Ġsettings Ġin Ġthe Ġforecast Ġfragment ; ĊĠĠĠĠ Ġ* Ġthis Ġwill Ġbe Ġused Ġby Ġthe ĠSettings Fragment Ġto Ġdetermine Ġwhich Ġsettings Ġare Ġtick ed Ġor Ġchecked . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġcommunic ator Ġ= Ġactivity Ġas ĠCom municator ĊĠĠĠĠĠĠĠ Ġcommunic ator . store Unit Degree Preference ( weather . degree Unit Code ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠUs ual ĠonCreate View Ġthat Ġevery ĠActivity Ġor ĠFragment Ġshould Ġhave . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . M ) ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġweather Code Ġfirst Ġfrom ĠSettings Fragment Ġif Ġthere 's Ġany . ĊĠĠĠĠĠĠĠ Ġdegree Unit Code Ġ= Ġarguments ?. getInt ( Keys . UNIT _ DEG REE _ KEY . name , ĠWeather . C ) !! ĊĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ forecast , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthird - party ĠAPI Ġfor Ġweather ĊĠĠĠĠĠĠĠ Ġthis . call API () ĊĊĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġthe ĠFore casts Ġfor Ġthe Ġfollowing Ġdays Ġ( RecyclerView ) ĊĠĠĠĠĠĠĠ Ġthis . initialize Forecast s ( view ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġthe ĠWeather Ġfor Ġtoday ĊĠĠĠĠĠĠĠ Ġthis . initialize Weather Today () ĊĊĠĠĠĠĠĠĠ Ġ// ĠReturn ĠView ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġmost Ġimportant Ġfunction Ġin Ġthe Ġprogram . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcall API () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġthe Ġthird - party ĠAPI ĊĠĠĠĠĠĠĠ Ġ// Ġ--> Ġhappens Ġhere Ġ<-- ĊĊĊĊ ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠDeclare Ġthe Ġlocation ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġ" Metro ĠMan ila " ĊĊĠĠĠĠĠĠĠ Ġ// ĠFORMAT : Ġadd Forecast ( day , Ġlocation , Ġweather Code , Ġtemperature , Ġunit Degree , Ġhum idity , Ġpre cip itation ) ĊĠĠĠĠĠĠĠ Ġ// ĠWeather Codes Ġ( 5 ĠWe athers ): ĠWeather . SUN NY , ĠWeather . CLOUD Y , ĠWeather . S NOW Y , ĠWeather . R AIN Y , ĠWeather . ST ORM Y ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġfirst Ġelement Ġin Ġthe ĠArrayList Ġis Ġthe Ġforecast Ġfor Ġ" Today " ĊĠĠĠĠĠĠĠ Ġadd Forecast (" Wednesday ", Ġlocation , ĠWeather . SUN NY , Ġ 3 5 , ĠWeather . C , Ġ 3 0 , Ġ 1 9 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġrest Ġof Ġthe Ġelements Ġare Ġthe Ġforecast s Ġfor Ġthe Ġfollowing Ġdays ĊĠĠĠĠĠĠĠ Ġadd Forecast (" Thursday ", Ġlocation , ĠWeather . CLOUD Y , Ġ 2 9 , ĠWeather . C , 3 2 , Ġ 1 4 ) ĊĠĠĠĠĠĠĠ Ġadd Forecast (" Friday ", Ġlocation , ĠWeather . S NOW Y , Ġ 1 3 , ĠWeather . C , 3 0 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġadd Forecast (" Saturday ", Ġlocation , ĠWeather . R AIN Y , Ġ 2 7 , ĠWeather . C , 3 0 , Ġ 7 7 ) ĊĠĠĠĠĠĠĠ Ġadd Forecast (" S unday ", Ġlocation , ĠWeather . ST ORM Y , Ġ 2 6 , ĠWeather . C , 3 0 , Ġ 7 7 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . M ) ĊĠĠĠ Ġprivate Ġfun Ġinitialize Weather Today () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweather . setDate ( LocalDate . now ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġweather . setLocation ( forecast s [ 0 ]. location ) ĊĠĠĠĠĠĠĠ Ġweather . set Weather ( forecast s [ 0 ]. weather ) ĊĠĠĠĠĠĠĠ Ġweather . set Temperature ( forecast s [ 0 ]. cel s ius , ĠWeather . C ) ĊĠĠĠĠĠĠĠ Ġweather . set Hum idity Percentage ( forecast s [ 0 ]. humidity ) ĊĠĠĠĠĠĠĠ Ġweather . set Pre cip itation Percentage ( forecast s [ 0 ]. prec ip itation ) ĊĠĠĠĠĠĠĠ Ġweather . set Unit Degree ( degree Unit Code ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize Forecast s ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrv Forecast s Ġ= Ġview . findViewById ( R . id . rv _ forecast ) !! ĊĠĠĠĠĠĠĠ Ġval Ġmanager : ĠRecyclerView . LayoutManager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( view . context , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġweather Ġ= ĠWeather ( view ) ĊĠĠĠĠĠĠĠ Ġrv Forecast s . layout Manager Ġ= Ġmanager ĊĠĠĠĠĠĠĠ Ġrv Forecast s . adapter Ġ= ĠFore cast Adapter ( forecast s , Ġweather ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Forecast ( day : ĠString , Ġlocation : ĠString , Ġweather Code : ĠInt , Ġtemperature : ĠInt , Ġunit Degree : ĠInt , Ġhum idity Percentage : ĠInt , Ġpre cip itation Percentage : ĠInt ){ ĊĊĠĠĠĠĠĠĠ Ġval Ġc els ius : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġfa hren heit : ĠInt ĊĊĠĠĠĠĠĠĠ Ġif ( unit Degree Ġ== ĠWeather . C ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc els ius Ġ= Ġtemperature ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfa hren heit Ġ= Ġ( cel s ius Ġ* Ġ 9 / 5 ) Ġ+ Ġ 3 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfa hren heit Ġ= Ġtemperature ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc els ius Ġ= Ġ( fahren heit Ġ- Ġ 3 2 ) Ġ* Ġ 5 / 9 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġforecast s . add ( Forecast ( day , Ġlocation , Ġweather Code , Ġc els ius , Ġfa hren heit , Ġhum idity Percentage , Ġpre cip itation Percentage )) ĊĠĠĠ Ġ} Ċ }