package Ġcom . pod cre ep . app . podcast s . discover Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . Keep Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . pod cre ep . concurrency . Task Runner Ċ import Ġcom . pod cre ep . concurrency . Threads Ċ import Ġcom . pod cre ep . databinding . Discover Trend ing Row Binding Ċ import Ġcom . pod cre ep . model . store . Pod cast Ċ import Ġcom . pod cre ep . model . sync . data . Pod cast Json Ċ import Ġcom . pod cre ep . model . sync . data . Pod cast List Json Ċ import Ġcom . pod cre ep . net . HttpRequest Ċ import Ġcom . pod cre ep . net . Server Ċ Ċ class ĠT rend ing Tab Layout Ġ@ Keep Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġtask Runner : ĠTask Runner , ĊĠĠĠ Ġprivate Ġval Ġcallbacks : ĠDis cover Layout . Callbacks ) ĊĠ Ġ: ĠRecyclerView ( context ) Ġ{ ĊĊĠ Ġprivate Ġval Ġ_ layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠ Ġlayout Manager Ġ= Ġ_ layout Manager ĊĊĊĠĠĠ Ġtask Runner . run Task ({ ĊĠĠĠĠĠ Ġval Ġrequest Ġ= ĠServer . request ("/ api / podcast s ") ĊĠĠĠĠĠĠĠĠĠ Ġ. method ( HttpRequest . Method . GET ) ĊĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠ Ġval Ġresp Ġ= Ġrequest . execute < Pod cast List Json >() ĊĠĠĠĠĠ Ġtask Runner . run Task ({ ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠAdapter ( resp . podcast s , Ġcallbacks ) ĊĠĠĠĠĠ Ġ}, ĠThread s . UI ) ĊĠĠĠ Ġ}, ĠThread s . BACKGROUND ) ĊĠ Ġ} ĊĊĠ Ġclass ĠAdapter ( ĊĠĠĠ Ġprivate Ġval Ġdataset : ĠList < Pod cast Json >, ĊĠĠĠ Ġprivate Ġval Ġcallbacks : ĠDis cover Layout . Callbacks ) ĊĠĠĠ Ġ: ĠRecyclerView . Adapter < ViewHolder >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠ Ġval Ġbinding Ġ= ĠDis cover Trend ing Row Binding . inflate ( in flater , Ġparent , Ġfalse ) ĊĠĠĠĠĠ Ġreturn ĠViewHolder ( binding , Ġcallbacks ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠ Ġreturn Ġdataset . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠ Ġholder . bind ( dataset [ position ]) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġclass ĠViewHolder ( val Ġbinding : ĠDis cover Trend ing Row Binding , Ġval Ġcallbacks : ĠDis cover Layout . Callbacks ) ĊĠĠĠ Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠ Ġfun Ġbind ( podcast : ĠPod cast Json ) Ġ{ ĊĠĠĠĠĠ Ġbinding . podcast Ġ= Ġpod cast ĊĠĠĠĠĠ Ġbinding . execute Pending Bindings () ĊĠĠĠĠĠ Ġbinding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġld Ġ= ĠMutable LiveData < Pod cast >() ĊĠĠĠĠĠĠĠĠĠ Ġld . value Ġ= ĠPod cast ( id Ġ= Ġpod cast . id , Ġtitle Ġ= Ġpod cast . title , Ġdescription Ġ= Ġpod cast . description , ĠimageUrl Ġ= Ġpod cast . imageUrl ) ĊĠĠĠĠĠĠĠĠĠ Ġcallbacks . on View Pod cast Click ( ld ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ