package Ġcom . zy . sun flower . ui . fragments Ċ Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . observe Ċ import Ġcn . char les . k asa . framework . base . Base Data Binding Fragment Ċ import Ġcn . char les . k asa . framework . utils . Log Util Ċ import Ġcn . char les . k asa . framework . utils . Utils Ċ import Ġcom . zy . sun flower . R Ċ import Ġcom . zy . sun flower . adapters . New Plant ListAdapter Ċ import Ġcom . zy . sun flower . adapters . Plant ListAdapter Ċ import Ġcom . zy . sun flower . databinding . Fragment Plant List Binding Ċ import Ġcom . zy . sun flower . repository . local . room . entry . Plant Ċ import Ġcom . zy . sun flower . utils . Injector Utils Ċ import Ġcom . zy . sun flower . view model . Pl ants List ViewModel Ċ Ċ /** Ċ Ġ* Ġæ ¤ į çī© åĪĹè¡¨ Ċ Ġ*/ Ċ class ĠPl ant List Fragment Ġ: ĠBase Data Binding Fragment < Fragment Plant List Binding >() Ġ{ ĊĠĠĠ Ġ// ĠåĪĽå»º viewModel å®ŀä¾ĭ ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠPl ants List ViewModel Ġby Ġview Models Ġ{ ĊĠĠĠĠĠĠĠ ĠInject or Utils . provide Plant List ViewModel Factory ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinject Data Binding () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetContent Res Id (): ĠInt Ġ= ĠR . layout . fragment _ plant _ list ĊĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ æĺ¾ç¤º èıľåįķ ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġvar Ġlist : ĠArrayList < Plant > Ġ= ĠArrayList < Plant >() ĊĠĠĠĠĠĠĠ Ġ// Ġvar Ġplant : ĠPl ant ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ// Ġbuild TestData ( plant , Ġlist ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġplant ListAdapter Ġ= ĠPl ant ListAdapter ( m Ctx , ĠArrayList < Plant >()) ĊĠĠĠĠĠĠĠ Ġval Ġplant ListAdapter Ġ= ĠNew Plant ListAdapter () ĊĠĠĠĠĠĠĠ Ġm Binding . rv Pl ants . adapter Ġ= Ġplant ListAdapter ĊĠĠĠĠĠĠĠ Ġsubscribe Ui 2 ( plant ListAdapter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è®¢ éĺħ Ui ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsubscribe Ui ( adapter : ĠPl ant ListAdapter ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . pl ants . observe ( view Lifecycle Owner ) Ġ{ Ġdatal ist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Util . lo ge (" subscribe Ui Ġdone Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . setData ( datal ist ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è®¢ éĺħ Ui ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsubscribe Ui 2 ( adapter : ĠNew Plant ListAdapter ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . pl ants . observe ( view Lifecycle Owner ) Ġ{ Ġdatal ist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Util . lo ge (" subscribe Ui Ġdone Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( datal ist ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild TestData ( ĊĠĠĠĠĠĠĠ Ġplant : ĠPl ant ?, ĊĠĠĠĠĠĠĠ Ġlist : ĠArrayList < Plant > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġplant 1 Ġ= Ġplant ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 1 .. 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplant 1 Ġ= ĠPl ant ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" test $ index ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" f -$ index ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( plant 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĽå»º èıľåįķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ plant list , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ èıľåįķ é¡¹ è¢« çĤ¹åĩ» ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . mid _ filter _ zone Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . show Toast Safe (" çŃ Ľ éĢī ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec Filter () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¿ĩæ»¤ çŃ Ľ éĢī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġexec Filter () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Filtered ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Grow Zone Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Grow Zone Number ( 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }