mirror of
https://github.com/lizongying/my-tv.git
synced 2026-11-01 00:56:29 +08:00
69 lines
2.3 KiB
Kotlin
69 lines
2.3 KiB
Kotlin
package com.lizongying.mytv
|
|
|
|
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 androidx.lifecycle.LifecycleOwner
|
|
import com.bumptech.glide.Glide
|
|
import com.lizongying.mytv.models.TVViewModel
|
|
|
|
class CardPresenter(
|
|
private val owner: LifecycleOwner,
|
|
) : 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.title.value
|
|
cardView.setMainImageDimensions(CARD_WIDTH, CARD_HEIGHT)
|
|
cardView.tag = tvViewModel.videoUrl.value
|
|
|
|
if (tvViewModel.logo.value != null) {
|
|
if (tvViewModel.title.value == "CCTV8K 超高清") {
|
|
Glide.with(viewHolder.view.context)
|
|
.load(R.drawable.cctv8k)
|
|
.centerInside()
|
|
.into(cardView.mainImageView)
|
|
} else {
|
|
Glide.with(viewHolder.view.context)
|
|
.load(tvViewModel.logo.value)
|
|
.centerInside()
|
|
.into(cardView.mainImageView)
|
|
}
|
|
|
|
cardView.setBackgroundColor(Color.WHITE)
|
|
cardView.setMainImageScaleType(ImageView.ScaleType.CENTER_INSIDE)
|
|
}
|
|
|
|
tvViewModel.program.observe(owner) { _ ->
|
|
val program = tvViewModel.getProgramOne()
|
|
if (program != null) {
|
|
cardView.contentText = program.name
|
|
}
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|
|
} |