package Ġcom . av s . image list item . recycler _ view . shared Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . graphics . Color Utils Ċ import Ġandroidx . palette . graphics . Palette Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . av s . image list item . MAX _ ALPHA Ċ import Ġcom . av s . image list item . R Ċ import Ġcom . av s . image list item . UI Data Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġcom . squareup . pic asso . Target Ċ import Ġandroidx . annotation . Color Int Ċ import Ġcom . av s . image list item . databinding . ListItem Land scape Binding Ċ import Ġkotlin . math . round ToInt ĊĊ Ċ class ĠLand scape ViewHolder Ġprivate Ġconstructor ( private Ġval Ġbinding : ĠListItem Land scape Binding ) Ġ: ĊĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtarget : ĠTarget ĊĊĠĠĠ Ġfun Ġbind ( ĊĠĠĠĠĠĠĠ Ġmovie ClickListener : ĠItem Listener , ĊĠĠĠĠĠĠĠ Ġitem : ĠUI Data , ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . item ClickListener Ġ= Ġmovie ClickListener ĊĠĠĠĠĠĠĠ Ġbinding . ui Data Ġ= Ġitem ĊĠĠĠĠĠĠĠ Ġtarget Ġ= Ġinit Target ( item , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġbinding . iv Post er . tag Ġ= Ġtarget ĊĠĠĠĠĠĠĠ ĠPic asso . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( item . url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . ic _ baseline _ image _ 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ baseline _ broken _ image _ 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( target ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcleanup () Ġ{ ĊĠĠĠĠĠĠĠ ĠPic asso . get (). cancel Request ( target ) ĊĠĠĠĠĠĠĠ Ġbinding . iv Post er . setImage Drawable ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Target ( item : ĠUI Data , Ġcontext : ĠContext ): ĠTarget Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠTarget Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bitmap Loaded ( bitmap : ĠBitmap ?, Ġfrom : ĠPic asso . Loaded From ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . iv Post er . setImage Bitmap ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPalette . from ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. generate Ġ{ Ġpalette Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpalette ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsw atch Ġ= Ġit . dom inant Sw atch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor With Alpha Ġ= Ġadjust Alpha ( sw atch ?. rgb Ġ?: Ġget Color ById ( context , ĠR . color . white ), ĠAL PH A _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Title . background . set Tint ( color With Alpha ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sw atch Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Title . setTextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor Utils . set Alpha Component ( sw atch . title TextColor , ĠMAX _ ALPHA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Title . setTextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Color ById ( context , ĠR . color . black ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Title . text Ġ= Ġitem . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bitmap Failed ( e : ĠException ?, Ġerror Drawable : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . iv Post er . setImage Drawable ( error Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Prepare Load ( place Holder Drawable : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . iv Post er . setImage Drawable ( place Holder Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Color ById ( context : ĠContext , Ġid : ĠInt ) Ġ= ĠContext Compat . getColor ( context , Ġid ) ĊĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġfun Ġadjust Alpha (@ Color Int Ġcolor : ĠInt , Ġfactor : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalpha Ġ= Ġ( Color . alpha ( color ) Ġ* Ġfactor ). round ToInt () ĊĠĠĠĠĠĠĠ Ġval Ġred : ĠInt Ġ= ĠColor . red ( color ) ĊĠĠĠĠĠĠĠ Ġval Ġgreen : ĠInt Ġ= ĠColor . green ( color ) ĊĠĠĠĠĠĠĠ Ġval Ġblue : ĠInt Ġ= ĠColor . blue ( color ) ĊĠĠĠĠĠĠĠ Ġreturn ĠColor . arg b ( alpha , Ġred , Ġgreen , Ġblue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAL PH A _ VALUE Ġ= Ġ 0 . 7 5 F ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( parent : ĠViewGroup ): ĠLand scape ViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠListItem Land scape Binding . inflate ( layout Inflater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLand scape ViewHolder ( binding ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }