package Ġcom . ath ert on . up next . presentation . features . content . adapter Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . ath ert on . up next . R Ċ import Ġcom . ath ert on . up next . domain . model . Video Ċ import Ġcom . ath ert on . up next . presentation . util . glide . G lide Requests Ċ import Ġcom . ath ert on . up next . presentation . util . image . Image Loader Ċ import Ġcom . ath ert on . up next . util . extension . inflate Layout Ċ import Ġkotlinx . android . extensions . Layout Container Ċ import Ġkotlinx . android . synt hetic . main . item _ detail _ scroll ing _ video _ item .* Ċ Ċ class ĠModel Detail Video Adapter ( ĊĠĠĠ Ġprivate Ġval Ġimage Loader : ĠImage Loader , ĊĠĠĠ Ġprivate Ġval Ġg lide Requests : ĠG lide Requests , ĊĠĠĠ Ġprivate Ġval Ġon Video ClickListener : Ġ( Video ) Ġ-> ĠUnit Ċ ) Ġ: ĠModel Detail Adapter . Scrolling Child Adapter < Video , ĠModel Detail Video Adapter . ViewHolder >( Diff Callback ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . inflate Layout ( R . layout . item _ detail _ scroll ing _ video _ item ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Loader , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg lide Requests ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Video ClickListener . invoke ( getItem ( adapter Position )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( getItem ( position )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġcontainer View : ĠView , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġimage Loader : ĠImage Loader , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġg lide Requests : ĠG lide Requests ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( container View ), ĊĠĠĠĠĠĠĠ ĠLayout Container Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( video : ĠVideo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// todo Ġfigure Ġout Ġcorrect Ġwidth Ġfor Ġthis ĠImageView Ġ- Ġwe Ġwant Ġit Ġto Ġbe Ġfull Ġscreen Ġwidth Ġminus Ġmargin Ġeach Ġside ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Loader . load ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Ġ= Ġg lide Requests , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġvideo . thumbnail , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Options Ġ= ĠImage Loader . model Detail Video RequestOptions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinto Ġ= Ġthumbnail ImageView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Title TextView . text Ġ= Ġvideo . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Type TextView . text Ġ= Ġvideo . type ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġobject ĠDiff Callback Ġ: ĠDiff Util . Item Callback < Video >() Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠVideo , Ġnew Item : ĠVideo ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠVideo , Ġnew Item : ĠVideo ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ