package Ġcat . helm . base architecture . ui . discover Ċ Ċ import Ġandroid . support . v 7 . util . Diff Util Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcat . helm . base architecture . R Ċ import Ġcat . helm . base architecture . model . Tv Show Ċ import Ġcat . helm . base architecture . ui . bind Ċ import Ġkotlinx . android . synt hetic . main . item _ tv _ show . view .* Ċ import Ġjavax . inject . Inject Ċ import Ġkotlin . properties . Deleg ates Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠBor ja Ġon Ġ 2 / 6 / 1 7 . Ċ Ġ*/ Ċ class ĠT v Show Adapter Ġ@ Inject Ġconstructor ( private Ġval Ġdiscover Presenter : ĠDis cover Presenter ) ĊĠĠĠ Ġ: ĠRecyclerView . Adapter < Tv Show ViewHolder >() Ġ{ ĊĊĠĠĠ Ġvar Ġtv Shows : ĠList < Tv Show > Ġby ĠDeleg ates . observable ( emptyList ()) Ġ{ Ġ_, Ġold , Ġnew Ġ-> ĊĠĠĠĠĠĠĠ Ġauto Notify ( old , Ġnew ) Ġ{ Ġold , Ġnew Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold . id Ġ== Ġnew . id ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠT v Show ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . item _ tv _ show , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠT v Show ViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠT v Show ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġholder . bind ( tv Shows [ position ], Ġdiscover Presenter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġtv Shows . size ĊĊĠĠĠ Ġfun Ġauto Notify ( old List : ĠList < Tv Show >, Ġnew List : ĠList < Tv Show >, Ġcompare : Ġ( Tv Show , ĠT v Show ) Ġ-> ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= ĠDiff Util . calculate Diff ( object Ġ: ĠDiff Util . Callback () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcompare ( old List [ old Item Position ], Ġnew List [ new Item Position ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold List [ old Item Position ] Ġ== Ġnew List [ new Item Position ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Old List Size () Ġ= Ġold List . size ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget New List Size () Ġ= Ġnew List . size ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġdiff . dispatch Updates To ( this ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠT v Show ViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠ Ġfun Ġbind ( tv Show : ĠT v Show , Ġdiscover Presenter : ĠDis cover Presenter ) Ġ{ ĊĠĠĠĠĠĠĠ ĠitemView . tv _ show _ name . text Ġ= Ġtv Show . name ĊĠĠĠĠĠĠĠ ĠitemView . image . bind ( item View . context . getString ( R . string . base ImageUrl ) Ġ+ Ġtv Show . image ) ĊĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiscover Presenter . on Tv Show Pressed ( tv Show . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ