package Ġsoup . movie . home . favorite Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . app . Activity Options Compat Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . lifecycle . observe Ċ import Ġandroidx . navigation . Activity Navigator Extras Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġjp . was ab eef . recyclerview . anim ators . Fade In Animator Ċ import Ġsoup . movie . analytics . Event Analytics Ċ import Ġsoup . movie . ext . ass isted ViewModels Ċ import Ġsoup . movie . home . Home Fragment Directions Ċ import Ġsoup . movie . home . databinding . Home Tab Favorite Binding Ċ import Ġsoup . movie . home . tab . Home Tab Fragment Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠHome Favorite Fragment Ġ: ĠHome Tab Fragment () Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġanalytics : ĠEvent Analytics ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠHome Tab Favorite Binding ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠHome Favorite ViewModel . Factory ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠHome Favorite ViewModel Ġby Ġass isted ViewModels Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Factory . create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠHome Tab Favorite Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġview Lifecycle Owner ĊĠĠĠĠĠĠĠ Ġbinding . init ViewState ( viewModel ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠHome Tab Favorite Binding . init ViewState ( viewModel : ĠHome Favorite ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Adapter Ġ= ĠHome Favorite ListAdapter ( root . context ) Ġ{ Ġmovie , Ġshared Elements Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanalytics . click Movie () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHome Fragment Directions . action To Detail ( movie ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Navigator Extras ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Options Ġ= ĠActivity Options Compat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. make Scene Transition Animation ( require Activity (), Ġ* shared Elements ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠlistView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġlist Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Animator Ġ= ĠF ade In Animator () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . contents Ui Model . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġno Items View . isVisible Ġ= Ġit . movies . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Adapter . submit List ( it . movies ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġscroll To Top () Ġ{ ĊĠĠĠĠĠĠĠ Ġget ListView ()?. scrollTo Top Internal () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget ListView ()?. scrollTo Top Internal () Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget ListView (): ĠRecyclerView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(:: binding . isInitialized ) Ġbinding . list View Ġelse Ġnull ĊĠĠĠ Ġ} Ċ } Ċ