Ċ Ċ /* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// 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 . ec card . popular movies . ui . main Ċ Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . util . Log Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . palette . graphics . Palette Ċ import Ġcom . ec card . popular movies . utils . App Executors Ċ import Ġcom . ec card . popular movies . R Ċ import Ġcom . ec card . popular movies . data . network . model . Movie Ċ import Ġcom . ec card . popular movies . databinding . Adapter Movie Item Binding Ċ import Ġcom . ec card . popular movies . utils . rv . Data Bound ListAdapter Ċ import Ġcom . squareup . pic asso . Callback Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġkotlinx . android . synt hetic . main . adapter _ movie _ item . view .* ĊĊ Ċ /** Ċ Ġ* ĠA ĠRecyclerView Ġadapter Ġfor Ġ[ Movie ] Ġclass . Ċ Ġ*/ Ċ class ĠMovie Adapter ( Ċ // ĠĠĠĠĠĠĠ Ġprivate Ġval Ġdata Binding Component : ĠData Binding Component , ĊĠĠĠĠĠĠĠ Ġapp Executors : ĠApp Executors , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrepo Click Callback : Ġ(( Movie ) Ġ-> ĠUnit )? Ċ ) Ġ: ĠData Bound ListAdapter < Movie , ĠAdapter Movie Item Binding >( ĊĠĠĠĠĠĠĠ Ġapp Executors Ġ= Ġapp Executors , ĊĠĠĠĠĠĠĠ Ġdiff Callback Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Movie >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠMovie , Ġnew Item : ĠMovie ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠMovie , Ġnew Item : ĠMovie ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . title Ġ== Ġnew Item . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġold Item . original _ title Ġ== Ġnew Item . original _ title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Binding ( parent : ĠViewGroup ): ĠAdapter Movie Item Binding Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠData Binding Util . inflate < Adapter Movie Item Binding >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . adapter _ movie _ item , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, data Binding Component ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġbinding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . movie ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Click Callback ?. invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( binding : ĠAdapter Movie Item Binding , Ġitem : ĠMovie ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . movie Ġ= Ġitem ĊĊĠĠĠĠĠĠĠ Ġsetup Img ( item , Ġbinding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Img ( item : ĠMovie , Ġbinding : ĠAdapter Movie Item Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpic asso : ĠPic asso Ġ= ĠPic asso . get () ĊĠĠĠĠĠĠĠ Ġpic asso . set Indicators Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġpic asso . load ( item . generate Post er Url ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . root . img _ movie _ item , Ġobject Ġ: ĠCallback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġ( binding . root . img _ movie _ item . drawable Ġas ĠBitmap Drawable ). bitmap ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPalette . from ( bitmap ). generate Ġ{ Ġpalette Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetUp Info BackgroundColor ( binding , Ġpalette !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠException ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Movie Adapter ", ĠLog . get StackTrace String ( e )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Info BackgroundColor ( binding : ĠView Data Binding , Ġpalette : ĠPalette ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġsw atch Ġ= Ġpalette . vi br ant Sw atch ĊĠĠĠĠĠĠĠ Ġ// If Ġthere Ġis Ġno Ġvi br ant Ġsw atch , Ġtry Ġgetting Ġdom inant Ġsw atch ĊĠĠĠĠĠĠĠ Ġif ( sw atch Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette . dom inant Sw atch ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthere Ġis Ġno Ġdom inant Ġsw atch Ġtry Ġgetting Ġmut ed Ġsw atch ĊĠĠĠĠĠĠĠ Ġif ( sw atch Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsw atch Ġ= Ġpalette . muted Sw atch ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthere Ġis Ġno Ġdom inant Ġsw atch Ġtry Ġgetting Ġmut ed Ġsw atch ĊĠĠĠĠĠĠĠ Ġsw atch ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . image _ legend . set BackgroundColor ( it . rgb ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . tv _ movie _ title . setTextColor ( it . body TextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . tv _ movie _ rate . setTextColor ( it . title TextColor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ