package Ġcom . hod . the mov ied b . list Ċ Ċ import Ġandroid . app . Fragment Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . widget . Grid LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . hod . the mov ied b . R Ċ import Ġcom . hod . the mov ied b . detail . Detail Fragment Ċ import Ġcom . jak ew h art on . r xb ind ing 2 . view . click s Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . subjects . Publish Subject Ċ Ċ class ĠList Fragment Ġ: ĠFragment (), ĠList Presenter . View Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpresenter Ġ= ĠList Presenter () ĊĠĠĠ Ġprivate Ġval Ġadapter Ġ= ĠAdapter () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ list , Ġcontainer , Ġfalse ). find Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView ?, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġpresenter . on View Attached ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . on View Detached ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay List ( movies : Ġkotlin . collections . List < Movie >) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . add Items ( movies ) ĊĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay Detail ( code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdetail Fragment Ġ= ĠDetail Fragment () ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġbundle . put Int (" code ", Ġcode ) ĊĠĠĠĠĠĠĠ Ġdetail Fragment . arguments Ġ= Ġbundle ĊĊĠĠĠĠĠĠĠ Ġfragment Manager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . container , Ġdetail Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack (" detail ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclicks (): ĠObservable < Int > Ġ= Ġadapter . click s ĊĊĠĠĠ Ġprivate Ġfun ĠView . find Views (): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= Ġthis . findViewById < RecyclerView >( R . id . recycler ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠGrid LayoutManager ( context , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠAdapter Ġ: ĠRecyclerView . Adapter < Adapter . Vh >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdata Ġ= ĠArrayList < Movie >() ĊĠĠĠ Ġinternal Ġval Ġclicks : ĠPublish Subject < Int > Ġ= ĠPublish Subject . create < Int >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠV h ( LayoutInflater . from ( parent . context ). inflate ( R . layout . item , Ġparent , Ġfalse )) ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠAdapter . Vh , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . title . text Ġ= Ġdata [ position ]. title ĊĠĠĠĠĠĠĠ Ġholder . image . load Image ( data [ position ]. poster Path ) ĊĠĠĠĠĠĠĠ Ġholder . click s . map Ġ{ Ġdata [ position ]. id Ġ}. subscribe ( click s ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġdata . size ĊĊĠĠĠ Ġfun Ġadd Items ( movies : Ġkotlin . collections . List < Movie >) Ġ= Ġdata . addAll ( movies ) ĊĊĠĠĠ Ġclass ĠV h ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimage : ĠImageView Ġ= ĠitemView . findViewById ( R . id . image ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle : ĠTextView Ġ= ĠitemView . findViewById ( R . id . title ) ĊĠĠĠĠĠĠĠ Ġval Ġclicks : ĠObservable < Unit > Ġ= ĠitemView . click s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠImageView . load Image ( poster Path : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠG lide . with ( this . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load (" https :// image . t mdb . org / t / p / w 5 0 0 $ poster Path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( this ) ĊĠĠĠ Ġ} Ċ } Ċ