/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* Ġ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 . google . samples . apps . sun flower . adapters Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . samples . apps . sun flower . Home ViewPager Fragment Directions Ċ import Ġcom . google . samples . apps . sun flower . Plant List Fragment Ċ import Ġcom . google . samples . apps . sun flower . data . Plant Ċ import Ġcom . google . samples . apps . sun flower . databinding . ListItem Plant Binding Ċ Ċ /** Ċ Ġ* ĠAdapter Ġfor Ġthe Ġ[ RecyclerView ] Ġin Ġ[ Plant List Fragment ]. Ċ Ġ*/ Ċ class ĠPl ant Adapter Ġ: ĠList Adapter < Plant , ĠRecyclerView . ViewHolder >( Plant Diff Callback ()) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPl ant ViewHolder ( ListItem Plant Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplant Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġ( holder Ġas ĠPl ant ViewHolder ). bind ( plant ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠPl ant ViewHolder ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠListItem Plant Binding ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . set ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plant ?. let Ġ{ Ġplant Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Plant ( plant , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġnavigate To Plant ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplant : ĠPl ant , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠView ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirection Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHome ViewPager Fragment Directions . action ViewPager Fragment To Plant Detail Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplant . plant Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . find Nav Controller (). navigate ( direction ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠPl ant ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplant Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Pending Bindings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠPl ant Diff Callback Ġ: ĠDiff Util . Item Callback < Plant >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠPl ant , Ġnew Item : ĠPl ant ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item . plant Id Ġ== Ġnew Item . plant Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠPl ant , Ġnew Item : ĠPl ant ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠ Ġ} Ċ }