package Ġdog . snow . android re cruit test . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . View Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġdog . snow . android re cruit test . constants . AL BU MS Ċ import Ġdog . snow . android re cruit test . constants . PH OT OS Ċ import Ġdog . snow . android re cruit test . R Ċ import Ġdog . snow . android re cruit test . constants . USERS Ċ import Ġdog . snow . android re cruit test . ext . to Album List Ċ import Ġdog . snow . android re cruit test . ext . to Photo List Ċ import Ġdog . snow . android re cruit test . ext . to UserList Ċ import Ġdog . snow . android re cruit test . adapter . ListAdapter Ċ import Ġdog . snow . android re cruit test . model . ListItem Ċ import Ġdog . snow . android re cruit test . vm . List ViewModel Ċ import Ġkotlinx . android . synt hetic . main . fragment _ list .* Ċ import Ġkotlinx . android . synt hetic . main . layout _ search . view .* Ċ import Ġorg . k oin . android . view model . ext . android . viewModel Ċ Ċ class ĠList Fragment Ġ: ĠFragment ( R . layout . fragment _ list ), ĠList Adapter . Interaction Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠList Adapter ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠList ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġphotos Ġ= Ġarguments ?. get Parcelable Array ( PH OT OS ). to Photo List () ĊĠĠĠĠĠĠĠ Ġval Ġalbum s Ġ= Ġarguments ?. get Parcelable Array ( AL BU MS ). to Album List () ĊĠĠĠĠĠĠĠ Ġval Ġusers Ġ= Ġarguments ?. get Parcelable Array ( USERS ). to UserList () ĊĊĠĠĠĠĠĠĠ ĠviewModel . set Lists From Intent ( photos , Ġalbum s , Ġusers ) ĊĠĠĠĠĠĠĠ ĠsetUp RecyclerView () ĊĠĠĠĠĠĠĠ ĠsetUp Search View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠList Adapter ( this ) ĊĠĠĠĠĠĠĠ Ġrv _ items . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġadapter . submit List ( viewModel . getItem List ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( viewModel . getItem List (). isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout _ empty _ view . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout _ empty _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( position : ĠInt , Ġitem : ĠListItem ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList Fragment Directions . action List Fragment To Details Fragment ( viewModel . get Detail ( item )) ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Search View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch _ view . et _ search . add TextChanged Listener ( search Text Watcher ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsearch Text Watcher Ġ= Ġobject Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( viewModel . get Filtered ItemList ( s . toString ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }