package Ġcom . example . sv book market . activities . adapter čĊč Ċ import Ġandroid . graphics . Bitmap č Ċ import Ġandroid . graphics . Color č Ċ import Ġandroid . graphics . drawable . Drawable č Ċ import Ġandroid . os . Build č Ċ import Ġandroid . util . Log č Ċ import Ġandroid . view . LayoutInflater č Ċ import Ġandroid . view . View č Ċ import Ġandroid . view . ViewGroup č Ċ import Ġandroid . widget . ImageView č Ċ import Ġandroid . widget . TextView č Ċ import Ġandroidx . annotation . Requires Api č Ċ import Ġandroidx . core . content . Context Compat č Ċ import Ġandroidx . core . graphics . l uminance č Ċ import Ġandroidx . palette . graphics . Palette č Ċ import Ġandroidx . recyclerview . widget . RecyclerView č Ċ import Ġcom . bump tech . glide . G lide č Ċ import Ġcom . bump tech . glide . load . engine . Disk Cache Strategy č Ċ import Ġcom . bump tech . glide . load . resource . bitmap . Bitmap Transition Options č Ċ import Ġcom . bump tech . glide . request . target . Bitmap ImageView Target č Ċ import Ġcom . bump tech . glide . request . target . Custom View Target č Ċ import Ġcom . bump tech . glide . request . transition . Transition č Ċ import Ġcom . example . sv book market . R č Ċ import Ġcom . example . sv book market . activities . common . Constants . DEFAULT _ IMG _ PLACE HOLDER č Ċ import Ġcom . example . sv book market . activities . model . Book č Ċ import Ġcom . google . android . material . card . Material Card View čĊčĊč Ċ class ĠSuggest Adapter ( čĊĠĠĠ Ġprivate Ġval Ġbooks : ĠMutable List < Book >, čĊĠĠĠ Ġprivate Ġval Ġlistener : ĠOn Suggest ClickListener č Ċ ) Ġ: čĊĠĠĠ ĠRecyclerView . Adapter < Suggest Adapter . Suggest ViewHolder >() Ġ{ čĊčĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠSuggest ViewHolder Ġ{ čĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . card _ suggest , Ġparent , Ġfalse ) čĊĠĠĠĠĠĠĠ Ġreturn ĠSuggest ViewHolder ( item View ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . O ) čĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠSuggest ViewHolder , Ġposition : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ Ġwith ( books [ position ]) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . let Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . title . text Ġ= ĠName čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . author . text Ġ= ĠAuthor čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . des . text Ġ= ĠDescription čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( holder . item View ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Bitmap () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( Image ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. disk Cache Strategy ( Disk Cache Strategy . ALL ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( DEFAULT _ IMG _ PLACE HOLDER ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. transition ( Bitmap Transition Options . with Cross Fade ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( object Ġ: ĠCustom View Target < ImageView , ĠBitmap >( it . thumbnail ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( error Drawable : ĠDrawable ?) Ġ{} čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource : ĠBitmap , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransition : ĠTransition < in ĠBitmap >? čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resource Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// init Ġview holder Ġpalette čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . get Palette From Bitmap ( resource ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// set Ġitems Ġcolor čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setColor () čĊč ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdid Suc ceed Transition Ġ= Ġtransition !!. transition ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap ImageView Target ( it . thumbnail ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! did Suc ceed Transition ) Ġit . thumbnail . setImage Bitmap ( resource ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Cle ared ( placeholder : ĠDrawable ?) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . thumbnail . setImage Drawable ( placeholder ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) čĊčĊčĊčĊč ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . item View Ġis ĠMaterial Card View ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . item View . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Suggest Click ( this ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ } čĊčĊč Ċ fun Ġadd Books ( book : ĠList < Book >) Ġ{ čĊĠĠĠ Ġif Ġ( this . books . isNotEmpty ()) Ġ{ čĊĠĠĠĠĠĠĠ Ġthis . books . clear () čĊĠĠĠ Ġ} čĊĠĠĠ Ġthis . books . addAll ( book ) čĊĠĠĠ Ġnotify DataSet Changed () č Ċ } čĊč Ċ override Ġfun ĠgetItem Count () Ġ= Ġbooks . size čĊč Ċ inner Ġclass ĠSuggest ViewHolder ( ViewHolder : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( ViewHolder ) Ġ{ čĊĠĠĠ Ġval Ġthumbnail : ĠImageView Ġ= ĠViewHolder . findViewById ( R . id . img Suggest ) čĊĠĠĠ Ġval Ġtitle : ĠTextView Ġ= ĠViewHolder . findViewById ( R . id . tv Book Suggest ) čĊĠĠĠ Ġval Ġauthor : ĠTextView Ġ= ĠViewHolder . findViewById ( R . id . tv Author Suggest ) čĊĠĠĠ Ġval Ġdes : ĠTextView Ġ= ĠViewHolder . findViewById ( R . id . sg _ description ) čĊčĊĠĠĠ Ġval ĠDEFAULT _ COLOR Ġ= ĠContext Compat . getColor ( čĊĠĠĠĠĠĠĠ Ġthis . item View . context , čĊĠĠĠĠĠĠĠ ĠR . color . white čĊĠĠĠ Ġ) čĊčĊĠĠĠ Ġvar Ġpalette : ĠPalette ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġdom inant Color Ġ= ĠDEFAULT _ COLOR čĊčĊčĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . O ) čĊĠĠĠ Ġfun Ġset Color () Ġ{ čĊĠĠĠĠĠĠĠ Ġset M TextColor () čĊĠĠĠĠĠĠĠ Ġset BackgroundColor () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget Palette From Bitmap ( bitmap : ĠBitmap ) Ġ{ čĊĠĠĠĠĠĠĠ Ġthis . palette Ġ= ĠPalette . from ( bitmap ). generate () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . O ) čĊĠĠĠ Ġprivate Ġfun Ġset M TextColor () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġthis . compute TextColor () čĊĠĠĠĠĠĠĠ Ġtitle . setTextColor ( color ) čĊĠĠĠĠĠĠĠ Ġauthor . setTextColor ( color ) čĊĠĠĠĠĠĠĠ Ġdes . setTextColor ( color ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġreturn Ġtext Ġcolor Ġbased Ġon Ġbackground Ġcolor čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . O ) čĊĠĠĠ Ġprivate Ġfun Ġcompute TextColor (): ĠInt Ġ{ čĊĠĠĠĠĠĠĠ Ġset Dominant Color () čĊĠĠĠĠĠĠĠ Ġ// Ġuse Ġdom inant Ġcolor Ġto Ġcompute Ġcolor čĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( this . dom inant Color . l uminance Ġ> Ġ 0 . 5 ) ĠColor . BLACK Ġelse ĠColor . WHITE čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġset Dominant Color () Ġ{ čĊĠĠĠĠĠĠĠ Ġthis . dom inant Color Ġ= Ġpalette ?. get Dominant Color ( DEFAULT _ COLOR ) !! čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġset BackgroundColor () Ġ{ čĊĠĠĠĠĠĠĠ Ġ// Ġget Ġmut ed Ġcolor Ġfrom Ġimage , Ġif Ġcannot , Ġreturn Ġdefault Ġcolor Ġ( green ) čĊĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġpalette ?. light Mut ed Sw atch ?. rgb Ġ?: ĠDEFAULT _ COLOR čĊčĊĠĠĠĠĠĠĠ Ġ// Ġif Ġcannot Ġget Ġlight Ġmut ed Ġcolor , Ġuse Ġdom inant Ġcolor čĊĠĠĠĠĠĠĠ Ġif Ġ( c . compareTo ( DEFAULT _ COLOR ) Ġ== Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" compare color ", Ġ" true ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġc Ġ= Ġpalette ?. dom inant Sw atch ?. rgb Ġ?: ĠDEFAULT _ COLOR čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ( this . item View Ġas ĠMaterial Card View ). set Card BackgroundColor ( c ) čĊĠĠĠ Ġ} č Ċ } čĊč Ċ interface ĠOn Suggest ClickListener Ġ{ čĊĠĠĠ Ġfun Ġon Suggest Click ( book : ĠBook ) č Ċ } č Ċ }