package Ġcom . be ok . book finder . search Ċ Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġcom . be ok . book finder . BR Ċ import Ġcom . be ok . book finder . R Ċ import Ġcom . be ok . book finder . buy Info . Book Buy Info Activity Ċ import Ġcom . be ok . book finder . databinding . Activity Book Search Binding Ċ import Ġcom . be ok . book finder . model . Book Item Ċ import Ġcom . be ok . common . base . Base Activity Ċ import Ġcom . be ok . common . base . Base Adapter Ċ import Ġcom . be ok . common . ext . startActivity Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ Ċ @ Android EntryPoint Ċ class ĠBook Search Activity Ġ: ĠBase Activity < Activity Book Search Binding >( ĊĠĠĠ ĠR . layout . activity _ book _ search Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Book Search ViewModel >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġsetup RecyclerView () ĊĠĠĠĠĠĠĠ Ġsetup Ob serve () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġbinding . sv Book Search . clear Focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Configuration Changed ( new Config : ĠConfiguration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Configuration Changed ( new Config ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgrid LayoutManager Ġ= Ġ( binding . rv Book Search Contents . layout Manager Ġas ĠGrid LayoutManager ) ĊĠĠĠĠĠĠĠ Ġif Ġ( new Config . orientation Ġ== ĠConfiguration . OR IENTATION _ LAND SC APE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid LayoutManager . span Count Ġ= ĠL AND SC APE _ SPAN _ COUNT ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( new Config . orientation Ġ== ĠConfiguration . OR IENTATION _ POR TRA IT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid LayoutManager . span Count Ġ= ĠP OR TRA IT _ SPAN _ COUNT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsetup Binding () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setup Binding () ĊĠĠĠĠĠĠĠ Ġbinding . vm Ġ= ĠviewModel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Ob serve () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġowner Ġ= Ġthis ĊĠĠĠĠĠĠĠ ĠviewModel . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr Message . observe ( owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( owner , Ġit , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Show Result . observe ( owner , ĠObserver Ġ{ Ġis Show Result Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Show Result ) Ġreturn @ Observer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Contents () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Buy Link . observe ( owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . err _ not _ exist _ buy _ link ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Observer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity < Book Buy Info Activity >( bundle Of (" buy Link " Ġto Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Contents () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . book ?. observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( binding . rv Book Search Contents . adapter Ġas ĠBase Adapter < Book Item >). submit List ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . rv Book Search Contents . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠBase Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Res Ġ= ĠR . layout . item _ book , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Id Ġ= ĠBR . item , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ= Ġmap Of ( BR . vm Ġto ĠviewModel ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiff Util Ġ= Ġsetup Book Search Diff Util () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Book Search Diff Util (): ĠDiff Util . Item Callback < Book Item > Ġ= ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠDiff Util . Item Callback < Book Item >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠBook Item , Ġnew Item : ĠBook Item ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item Ġ== Ġnew Item ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠBook Item , Ġnew Item : ĠBook Item ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠP OR TRA IT _ SPAN _ COUNT Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠL AND SC APE _ SPAN _ COUNT Ġ= Ġ 4 ĊĠĠĠ Ġ} Ċ } Ċ