package Ġai . tom orrow . mov iet ime Ċ Ċ import Ġai . tom orrow . mov iet ime . network . Movie Ċ import Ġai . tom orrow . mov iet ime . overview . Movie Api Status Ċ import Ġai . tom orrow . mov iet ime . overview . Movie ListAdapter Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . core . net . to Uri Ċ import Ġandroidx . databinding . Binding Adapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . load . resource . bitmap . Rounded C orners Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ Ċ const Ġval Ġmovie Db _ ApiKey Ġ= ĠBuild Config . Movie Db _ ApiKey Ċ private Ġval ĠIMAGE _ BASE _ URL Ġ= Ġ" https :// image . t mdb . org / t / p / w 5 0 0 /" Ċ Ċ /** Ċ Ġ* ĠWhen Ġthere Ġis Ġno ĠM ars Ġproperty Ġdata Ġ( data Ġis Ġnull ), Ġhide Ġthe Ġ[ RecyclerView ], Ġotherwise Ġshow Ġit . Ċ Ġ*/ Ċ @ Binding Adapter (" list Data ") Ċ fun Ġbind RecyclerView ( re cyclerView : ĠRecyclerView , Ġdata : ĠList < Movie > ?) Ġ{ ĊĠĠĠ Ġval Ġadapter Ġ= Ġre cyclerView . adapter Ġas ĠMovie ListAdapter ĊĠĠĠ Ġadapter . submit List ( data ) Ċ } ĊĊ Ċ /** Ċ Ġ* ĠUses Ġthe ĠG lide Ġlibrary Ġto Ġload Ġan Ġimage Ġby ĠURL Ġinto Ġan Ġ[ ImageView ] Ċ Ġ*/ Ċ @ Binding Adapter (" imageUrl ") Ċ fun Ġbind Image ( img View : ĠImageView , Ġposter Path : ĠString ?) Ġ{ ĊĠĠĠ Ġif Ġ( poster Path Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġimg View . setImage Resource ( R . drawable . ic _ connection _ error ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimg Uri Ġ= ĠIMAGE _ BASE _ URL . to Uri (). build Up on (). scheme (" https "). append Path ( poster Path ). build () ĊĠĠĠĠĠĠĠ ĠG lide . with ( img View . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( img Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Options () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . loading _ animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ broken _ image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. transforms ( Rounded C orners ( 2 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( img View ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠThis Ġbinding Ġadapter Ġdisplays Ġthe Ġ[ movie Api Status ] Ġof Ġthe Ġnetwork Ġrequest Ġin Ġan Ġimage Ġview . Ġ ĠWhen Ċ Ġ* Ġthe Ġrequest Ġis Ġloading , Ġit Ġdisplays Ġa Ġloading _ animation . Ġ ĠIf Ġthe Ġrequest Ġhas Ġan Ġerror , Ġit Ċ Ġ* Ġdisplays Ġa Ġbroken Ġimage Ġto Ġreflect Ġthe Ġconnection Ġerror . Ġ ĠWhen Ġthe Ġrequest Ġis Ġfinished , Ġit Ċ Ġ* Ġhide s Ġthe Ġimage Ġview . Ċ Ġ*/ Ċ @ Binding Adapter (" movie Api Status ") Ċ fun Ġbind Status ( status ImageView : ĠImageView , Ġstatus : ĠMovie Api Status ?) Ġ{ ĊĠĠĠ Ġwhen Ġ( status ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMovie Api Status . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ImageView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ImageView . setImage Resource ( R . drawable . loading _ animation ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠMovie Api Status . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ImageView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ImageView . setImage Resource ( R . drawable . ic _ connection _ error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠMovie Api Status . DONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ImageView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Binding Adapter ( value Ġ= Ġ* array Of (" show Image ", Ġ" image Path "), Ġrequire All Ġ= Ġfalse ) Ċ fun Ġshow Image ( imageView : ĠImageView , Ġhas Video : ĠBoolean , Ġimage Path : ĠString ?) Ġ{ ĊĠĠĠ Ġif Ġ( has Video ) Ġ{ ĊĠĠĠĠĠĠĠ ĠimageView . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( image Path Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setImage Resource ( R . drawable . ic _ connection _ error ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimg Uri Ġ= ĠIMAGE _ BASE _ URL . to Uri (). build Up on (). scheme (" https "). append Path ( image Path ). build () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( imageView . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( img Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Options () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . loading _ animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ broken _ image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. transforms ( Rounded C orners ( 2 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( imageView ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Binding Adapter (" show Play Icon ") Ċ fun Ġshow Play Icon ( imageView : ĠImageView , Ġhas Video : ĠBoolean ) Ġ{ ĊĠĠĠ Ġif Ġ( has Video ) Ġ{ ĊĠĠĠĠĠĠĠ ĠimageView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠimageView . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ċ }