2020-10-12 09:54:32 +02:00
package org.mosad.teapod.util
2020-10-13 15:56:07 +02:00
import android.content.Context
2020-10-12 09:54:32 +02:00
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
2020-10-13 15:56:07 +02:00
import com.bumptech.glide.Glide
2020-10-14 18:33:02 +02:00
import com.bumptech.glide.request.RequestOptions
import jp.wasabeef.glide.transformations.RoundedCornersTransformation
import kotlinx.android.synthetic.main.item_episode.view.*
2020-10-12 09:54:32 +02:00
import org.mosad.teapod.R
2020-10-13 20:23:55 +02:00
class EpisodesAdapter ( private val episodes : List < Episode > , private val context : Context ) : RecyclerView . Adapter < EpisodesAdapter . MyViewHolder > ( ) {
2020-10-12 09:54:32 +02:00
var onItemClick : ( ( String , Int ) -> Unit ) ? = null
override fun onCreateViewHolder ( parent : ViewGroup , viewType : Int ) : MyViewHolder {
2020-10-14 18:33:02 +02:00
val view = LayoutInflater . from ( parent . context ) . inflate ( R . layout . item _episode , parent , false )
2020-10-12 09:54:32 +02:00
return MyViewHolder ( view )
}
override fun onBindViewHolder ( holder : MyViewHolder , position : Int ) {
2020-10-13 20:23:55 +02:00
holder . view . text _episode _title . text = context . getString (
R . string . component _episode _title ,
episodes [ position ] . number ,
episodes [ position ] . description
)
holder . view . text _episode _desc . text = episodes [ position ] . shortDesc
if ( episodes [ position ] . posterLink . isNotEmpty ( ) ) {
2020-10-14 18:33:02 +02:00
Glide . with ( context ) . load ( episodes [ position ] . posterLink )
. apply ( RequestOptions . bitmapTransform ( RoundedCornersTransformation ( 10 , 0 ) ) )
. into ( holder . view . image _episode )
2020-10-13 20:23:55 +02:00
}
2020-10-13 15:56:07 +02:00
2020-10-13 20:23:55 +02:00
if ( ! episodes [ position ] . watched ) {
holder . view . image _watched . setImageDrawable ( null )
2020-10-13 15:56:07 +02:00
}
2020-10-12 09:54:32 +02:00
}
override fun getItemCount ( ) : Int {
2020-10-13 20:23:55 +02:00
return episodes . size
2020-10-12 09:54:32 +02:00
}
2020-10-13 23:47:48 +02:00
fun updateWatchedState ( watched : Boolean , position : Int ) {
episodes [ position ] . watched = watched
}
2020-10-12 09:54:32 +02:00
inner class MyViewHolder ( val view : View ) : RecyclerView . ViewHolder ( view ) {
init {
view . setOnClickListener {
2020-10-13 20:23:55 +02:00
onItemClick ?. invoke ( episodes [ adapterPosition ] . title , adapterPosition )
2020-10-12 09:54:32 +02:00
}
}
}
}