package Ġcom . m human . mov i ep lot . ui . movie Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . paging . Paged ListAdapter Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . m human . mov i ep lot . R Ċ import Ġcom . m human . mov i ep lot . databinding . Item Movie List Binding Ċ import Ġcom . m human . mov i ep lot . ext . load Drawable Ċ import Ġcom . m human . mov i ep lot . ext . load Url Ċ import Ġcom . m human . mov i ep lot . network . api . Movie Api Ċ import Ġcom . m human . mov i ep lot . network . model . Movie InfoList Ċ import Ġcom . m human . mov i ep lot . ui . detail . Detail Activity Ċ import Ġorg . jetbrains . ank o . startActivity Ċ Ċ class ĠMovie Paging Adapter Ġ: ĊĠĠĠ ĠP aged ListAdapter < Movie InfoList , ĠRecyclerView . ViewHolder >( REPO _ COMP AR ATOR ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠData Binding Util . inflate < Item Movie List Binding >( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ movie _ list , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġuser ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder Ġas ĠViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġclass ĠViewHolder ( private Ġval Ġitem : ĠItem Movie List Binding ) Ġ: ĊĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder (( item . root )) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( list : ĠMovie InfoList ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetIs Re cycl able ( false ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . textView Title Content . text Ġ= Ġlist . title ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list . overview ?. length Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . textView Movie Overview . text Ġ= ĠitemView . resources . getString ( R . string . msg _ empty _ overview ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . imageView More Content . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . textView Movie Overview . text Ġ= Ġlist . overview ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list . poster Path Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . imageView Movie Post er . load Drawable ( R . drawable . dummy _ poster _ image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . imageView Movie Post er . load Url ( Movie Api . API _ BASE _ IMAGE _ PATH _ URL Ġ+ Ġlist . poster Path ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . card View Movie Overview . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . textView Movie Overview . max Lines Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . textView Movie Overview . max Lines Ġ= Ġandroid . R . attr . max Lines ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . imageView More Content . load Drawable ( R . drawable . ic _ keyboard _ arrow _ up _ black _ 1 8 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . textView Movie Overview . max Lines Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . imageView More Content . load Drawable ( R . drawable . ic _ keyboard _ arrow _ down _ black _ 1 8 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . card View Movie Post er . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . card View Movie Post er . context . startActivity < Detail Activity >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDetail Activity . EXTRA _ MOV IE _ TITLE Ġto Ġlist . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDetail Activity . EXTRA _ MOV IE _ OVER VIEW Ġto Ġlist . overview , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDetail Activity . EXTRA _ MOV IE _ POST ER _ PATH Ġto Ġlist . poster Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDetail Activity . EXTRA _ MOV IE _ ID Ġto Ġlist . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠRE PO _ COMP AR ATOR Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Movie InfoList >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠMovie InfoList , Ġnew Item : ĠMovie InfoList ): ĠBoolean Ġ= Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠMovie InfoList , Ġnew Item : ĠMovie InfoList ): ĠBoolean Ġ= Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊ