/* čĊ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject čĊ Ġ* čĊ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); čĊ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . čĊ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat čĊ Ġ* čĊ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 čĊ Ġ* čĊ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware čĊ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , čĊ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . čĊ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand čĊ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . čĊ Ġ*/ č Ċ package Ġcom . example . android dev challenge čĊč Ċ import Ġandroid . os . Bundle č Ċ import Ġandroidx . activity . compose . setContent č Ċ import Ġandroidx . appcompat . app . AppCompatActivity č Ċ import Ġandroidx . compose . foundation . Image č Ċ import Ġandroidx . compose . foundation . click able č Ċ import Ġandroidx . compose . foundation . layout . Column č Ċ import Ġandroidx . compose . foundation . layout . Row č Ċ import Ġandroidx . compose . foundation . layout . fill Max Height č Ċ import Ġandroidx . compose . foundation . layout . fill Max Width č Ċ import Ġandroidx . compose . foundation . layout . padding č Ċ import Ġandroidx . compose . foundation . layout . size č Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column č Ċ import Ġandroidx . compose . foundation . lazy . items č Ċ import Ġandroidx . compose . foundation . shape . Circle Shape č Ċ import Ġandroidx . compose . material . Material Theme č Ċ import Ġandroidx . compose . material . Sca ffold č Ċ import Ġandroidx . compose . material . Surface č Ċ import Ġandroidx . compose . material . Text č Ċ import Ġandroidx . compose . material . Top AppBar č Ċ import Ġandroidx . compose . runtime . Composable č Ċ import Ġandroidx . compose . ui . Alignment č Ċ import Ġandroidx . compose . ui . Modifier č Ċ import Ġandroidx . compose . ui . draw . clip č Ċ import Ġandroidx . compose . ui . layout . Content Scale č Ċ import Ġandroidx . compose . ui . res . p ainter Resource č Ċ import Ġandroidx . compose . ui . text . font . Font Weight č Ċ import Ġandroidx . compose . ui . unit . dp č Ċ import Ġandroidx . compose . ui . unit . sp č Ċ import Ġandroidx . navigation . Nav Host Controller č Ċ import Ġandroidx . navigation . Nav Type č Ċ import Ġandroidx . navigation . compose . Nav Host č Ċ import Ġandroidx . navigation . compose . comp osable č Ċ import Ġandroidx . navigation . compose . nav Argument č Ċ import Ġandroidx . navigation . compose . navigate č Ċ import Ġandroidx . navigation . compose . remember Nav Controller č Ċ import Ġcom . example . android dev challenge . ui . theme . My Theme čĊč Ċ /** čĊ Ġ* Ġ@ property Ġindex čĊ Ġ* Ġ@ property Ġname čĊ Ġ* Ġ@ property Ġpic čĊ Ġ* Ġ@ property Ġlocation čĊ Ġ* Ġ@ property Ġdesc čĊ Ġ*/ č Ċ data Ġclass ĠDog s ( čĊĠĠĠ Ġval Ġindex : ĠInt , čĊĠĠĠ Ġval Ġname : ĠString , čĊĠĠĠ Ġval Ġpic : ĠInt , čĊĠĠĠ Ġval Ġlocation : ĠString , čĊĠĠĠ Ġval Ġdesc : ĠString č Ċ ) č Ċ val Ġdo gs Ġ= ĠlistOf < Dog s >( čĊĠĠĠ ĠDog s ( čĊĠĠĠĠĠĠĠĠ 0 , Ġ" Dex ter ", ĠR . drawable . img 1 , Ġ" M um ba i ", čĊĠĠĠĠĠĠĠ Ġ" The ĠA f ador Ġis Ġa Ġmixed Ġb reed Ġdog âĢĵ a Ġcross Ġbetween Ġthe ĠA f gh an ĠH ound " čĊĠĠĠ Ġ), čĊĠĠĠ ĠDog s ( čĊĠĠĠĠĠĠĠĠ 1 , Ġ" Jim ", ĠR . drawable . img 2 , Ġ" P une ", čĊĠĠĠĠĠĠĠ Ġ" The ĠA kit a ĠCh ow Ġis Ġa Ġmixed Ġb reed Ġdog âĢĵ a Ġcross Ġbetween Ġthe ĠA kit a " čĊĠĠĠ Ġ), čĊĠĠĠ ĠDog s ( čĊĠĠĠĠĠĠĠĠ 2 , Ġ" Tom ", ĠR . drawable . img 3 , Ġ" K olk ata ", čĊĠĠĠĠĠĠĠ Ġ" The ĠAus si ep om Ġis Ġa Ġmixed Ġb reed Ġdog ĠâĢĶ Ġa Ġcross Ġbetween Ġthe ĠA ustr alian " čĊĠĠĠ Ġ), čĊĠĠĠ ĠDog s ( čĊĠĠĠĠĠĠĠĠ 3 , Ġ" P eter ", ĠR . drawable . img 4 , Ġ" LA ", čĊĠĠĠĠĠĠĠ Ġ" The ĠA ustr alian ĠRetrie ver Ġis Ġa Ġmixed Ġb reed Ġdog âĢĵ a Ġcross Ġbetween Ġthe ĠA ustr alian " čĊĠĠĠ Ġ), čĊĠĠĠ ĠDog s ( 4 , Ġ" J erry ", ĠR . drawable . img 5 , Ġ" M um ba i ", Ġ" B asset ĠRetrie vers Ġare Ġgenerally Ġconsidered Ġto Ġbe Ġhealthy Ġdo gs "), čĊĠĠĠ ĠDog s ( čĊĠĠĠĠĠĠĠĠ 5 , Ġ" Sans ", ĠR . drawable . img 6 , Ġ" California ", čĊĠĠĠĠĠĠĠ Ġ" The ĠBe ag lier Ġis Ġa Ġrelatively Ġnew Ġmixed Ġb reed , Ġso Ġthere Ġare Ġfew Ġstandards Ġwhen Ġit Ġcomes Ġto Ġsize ." čĊĠĠĠ Ġ), čĊĠĠĠ ĠDog s ( čĊĠĠĠĠĠĠĠĠ 6 , Ġ" T erry ", ĠR . drawable . img 7 , Ġ" Go a ", čĊĠĠĠĠĠĠĠ Ġ" The ĠAus si ep om Ġis Ġa Ġmixed Ġb reed Ġdog ĠâĢĶ Ġa Ġcross Ġbetween Ġthe ĠA ustr alian ĠShe ph erd Ġand ĠP om er an ian Ġdog Ġb reed s ." čĊĠĠĠ Ġ), čĊĠĠĠ ĠDog s ( čĊĠĠĠĠĠĠĠĠ 7 , Ġ" Lo opy ", ĠR . drawable . img 8 , Ġ" Tex as ", čĊĠĠĠĠĠĠĠ Ġ" The ĠA ustr alian ĠRetrie ver Ġis Ġa Ġmixed Ġb reed Ġdog âĢĵ a Ġcross Ġbetween Ġthe ĠA ustr alian ĠShe ph erd Ġand ĠGold en ĠRetrie ver Ġdog Ġb reed s ." čĊĠĠĠ Ġ), čĊĠĠĠ ĠDog s ( 8 , Ġ" C yn th ia ", ĠR . drawable . img 9 , Ġ" M um ba i ", Ġ" The ĠAus si ep om Ġis Ġa Ġmixed Ġb reed Ġdog ĠâĢĶ Ġa Ġcross Ġbetween Ġthe ĠA ustr alian ĠShe ph erd Ġand ĠP om er an ian Ġdog Ġb reed s . Ġ"), čĊĠĠĠ ĠDog s ( 9 , Ġ" John ", ĠR . drawable . img 6 , Ġ" Par is ", Ġ" The ĠBe ag lier Ġis Ġa Ġrelatively Ġnew Ġmixed Ġb reed , Ġso Ġthere Ġare Ġfew Ġstandards Ġwhen Ġit Ġcomes Ġto Ġsize . Ġ"), č Ċ ) čĊč Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ čĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) čĊĠĠĠĠĠĠĠ Ġset Content Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Theme Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠA Ġsurface Ġcontainer Ġusing Ġthe Ġ' background ' Ġcolor Ġfrom Ġthe Ġtheme čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSurface ( color Ġ= ĠMaterial Theme . colors . background ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Navigation () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Composable čĊĠĠĠ Ġfun Ġapp Navigation () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġremember Nav Controller () čĊčĊĠĠĠĠĠĠĠ ĠNav Host ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġnav Controller , Ġstart Destination Ġ= Ġ" dog s ListView ", čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder Ġ= Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp osable (" dog s ListView ") Ġ{ Ġhome Screen ( nav Controller ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp osable ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" details View /{ dog Index }", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠlistOf ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Argument (" dog Index ") Ġ{ Ġtype Ġ= ĠNav Type . Int Type Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġarg Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg . arguments ?. let Ġ{ Ġdetails View ( dog Index Ġ= Ġit . getInt (" dog Index ")) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠ Ġ} č Ċ } čĊč Ċ /** čĊ Ġ* Ġ@ param Ġnav Controller čĊ Ġ*/ č Ċ @ Composable č Ċ fun Ġhome Screen ( nav Controller : ĠNav Host Controller ) Ġ{ čĊĠĠĠ ĠScaffold ( čĊĠĠĠĠĠĠĠ Ġtop Bar Ġ= Ġ{ ĠTop AppBar ( title Ġ= Ġ{ ĠText (" Dog gy ĠApp ") Ġ}) Ġ}, čĊĠĠĠĠĠĠĠ Ġcontent Ġ= Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Dog s ( nav Controller Ġ= Ġnav Controller ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ) č Ċ } čĊč Ċ /** čĊ Ġ* Ġ@ param Ġdog Index čĊ Ġ*/ č Ċ @ Composable č Ċ fun Ġdetails View ( dog Index : ĠInt ) Ġ{ čĊĠĠĠ ĠScaffold ( čĊĠĠĠĠĠĠĠ Ġtop Bar Ġ= Ġ{ ĠTop AppBar ( title Ġ= Ġ{ ĠText (" Dog gy ĠApp ") Ġ}) Ġ}, čĊĠĠĠĠĠĠĠ Ġcontent Ġ= Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( modifier Ġ= ĠModifier . fill Max Width ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( id Ġ= Ġdo gs [ dog Index ]. pic ), Ġcontent Description Ġ= Ġ" Dog gy ", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Scale Ġ= ĠContent Scale . Crop , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill Max Width () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( dog s [ dog Index ]. name , Ġmodifier Ġ= ĠModifier . padding ( start Ġ= Ġ 8 . dp , Ġtop Ġ= Ġ 8 . dp , Ġend Ġ= Ġ 8 . dp , Ġbottom Ġ= Ġ 2 . dp ), ĠfontSize Ġ= Ġ 2 6 . sp , ĠfontWeight Ġ= ĠFontWeight . Medium ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( dog s [ dog Index ]. location , Ġmodifier Ġ= ĠModifier . padding ( start Ġ= Ġ 8 . dp , Ġbottom Ġ= Ġ 8 . dp , Ġend Ġ= Ġ 8 . dp , Ġtop Ġ= Ġ 2 . dp ), ĠfontSize Ġ= Ġ 2 2 . sp , ĠfontWeight Ġ= ĠFontWeight . Normal ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Column ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġ 1 , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Content Ġ= Ġ{ Ġitem Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( dog s [ dog Index ]. desc , Ġmodifier Ġ= ĠModifier . padding ( all Ġ= Ġ 8 . dp ), ĠfontSize Ġ= Ġ 2 0 . sp ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ) č Ċ } čĊč Ċ /** čĊ Ġ* Ġ@ param Ġdog Index čĊ Ġ* Ġ@ param Ġnav Controller čĊ Ġ*/ č Ċ fun Ġnavigate To Dog ( nav Controller : ĠNav Host Controller , Ġdog Index : ĠInt ) Ġ{ čĊĠĠĠ Ġnav Controller . navigate ( route Ġ= Ġ" details View /$ dog Index ") č Ċ } čĊč Ċ /** čĊ Ġ* Ġ@ param Ġnav Controller čĊ Ġ*/ č Ċ @ Composable č Ċ fun ĠlistOf Dog s ( nav Controller : ĠNav Host Controller ) Ġ{ čĊĠĠĠ ĠLazy Column ( čĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( all Ġ= Ġ 1 2 . dp ) čĊĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠ Ġitems ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= Ġdo gs , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Content Ġ= Ġ{ Ġitem Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( all Ġ= Ġ 8 . dp ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Dog ( nav Controller , Ġitem . index ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( id Ġ= Ġitem . pic ), Ġcontent Description Ġ= Ġ" Dog gy ", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Scale Ġ= ĠContent Scale . Crop , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( 6 4 . dp ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip ( Circle Shape ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( item . name , Ġmodifier Ġ= ĠModifier . padding ( start Ġ= Ġ 8 . dp )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠ Ġ} č Ċ } čĊč Ċ /** čĊ Ġ* Ġ@ param Ġname čĊ Ġ*/ č Ċ @ Composable č Ċ fun Ġg reeting ( name : ĠString ) Ġ{ čĊĠĠĠ ĠText ( text Ġ= Ġ" Hello Ġ$ name !") č Ċ } čĊ