mirror of
https://github.com/lizongying/my-tv.git
synced 2026-10-26 22:26:29 +08:00
76 lines
2.5 KiB
Kotlin
76 lines
2.5 KiB
Kotlin
package com.lizongying.mytv
|
|
|
|
import android.content.Context
|
|
import android.graphics.Color
|
|
import android.view.ContextThemeWrapper
|
|
import android.view.ViewGroup
|
|
import android.widget.ImageView
|
|
import androidx.leanback.widget.ImageCardView
|
|
import androidx.leanback.widget.Presenter
|
|
import com.bumptech.glide.Glide
|
|
import com.lizongying.mytv.models.TVViewModel
|
|
|
|
class CardPresenter(
|
|
private val context: Context,
|
|
) : Presenter() {
|
|
|
|
override fun onCreateViewHolder(parent: ViewGroup): ViewHolder {
|
|
val cardView = object :
|
|
ImageCardView(ContextThemeWrapper(parent.context, R.style.CustomImageCardTheme)) {}
|
|
|
|
cardView.isFocusable = true
|
|
cardView.isFocusableInTouchMode = true
|
|
return ViewHolder(cardView)
|
|
}
|
|
|
|
override fun onBindViewHolder(viewHolder: ViewHolder, item: Any?) {
|
|
val tvViewModel = item as TVViewModel
|
|
val cardView = viewHolder.view as ImageCardView
|
|
|
|
cardView.titleText = tvViewModel.getTV().title
|
|
cardView.setMainImageDimensions(CARD_WIDTH, CARD_HEIGHT)
|
|
cardView.tag = tvViewModel.videoUrl.value
|
|
|
|
cardView.mainImageView?.let {
|
|
Glide.with(viewHolder.view.context)
|
|
.load(tvViewModel.getTV().logo)
|
|
.centerInside()
|
|
.into(it)
|
|
}
|
|
|
|
cardView.setBackgroundColor(Color.WHITE)
|
|
cardView.setMainImageScaleType(ImageView.ScaleType.CENTER_INSIDE)
|
|
|
|
// cardView.setOnFocusChangeListener { v, hasFocus ->
|
|
// run {
|
|
// if (hasFocus) {
|
|
// if (v != null) {
|
|
// (v as ImageCardView).setInfoAreaBackgroundColor(context.resources.getColor(R.color.focus))
|
|
// }
|
|
// } else {
|
|
// if (v != null) {
|
|
// (v as ImageCardView).setInfoAreaBackgroundColor(context.resources.getColor(R.color.ic_launcher_background))
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
val epg = tvViewModel.epg.value?.filter { it.beginTime < Utils.getDateTimestamp() }
|
|
if (!epg.isNullOrEmpty()) {
|
|
cardView.contentText = epg.last().title
|
|
} else {
|
|
cardView.contentText = ""
|
|
}
|
|
}
|
|
|
|
override fun onUnbindViewHolder(viewHolder: ViewHolder) {
|
|
val cardView = viewHolder.view as ImageCardView
|
|
cardView.mainImage = null
|
|
}
|
|
|
|
companion object {
|
|
private const val TAG = "CardPresenter"
|
|
private const val CARD_WIDTH = 300
|
|
private const val CARD_HEIGHT = 101
|
|
}
|
|
} |