Musicoo/app/src/main/java/com/player/musicoo/adapter/OfflineSongsAdapter.kt
2024-05-24 13:43:13 +08:00

99 lines
3.6 KiB
Kotlin

package com.player.musicoo.adapter
import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.media3.common.C
import androidx.media3.common.MediaItem
import androidx.media3.common.Player
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.player.musicoo.R
import com.player.musicoo.bean.OfflineBean
import com.player.musicoo.databinding.OfflineListItemBinding
import com.player.musicoo.databinding.PlayListItemBinding
import com.player.musicoo.media.MediaControllerManager
class OfflineSongsAdapter(
private val context: Context,
private val list: List<OfflineBean>,
) :
RecyclerView.Adapter<OfflineSongsAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding = OfflineListItemBinding.inflate(LayoutInflater.from(context), parent, false)
return ViewHolder(binding)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val bean = list[position]
holder.bind(bean)
holder.itemView.setOnClickListener {
// val meController = MediaControllerManager.getController()
// if (meController != null && meController.currentMediaItem != null) {
// var index = holder.bindingAdapterPosition
// if (index > meController.mediaItemCount) {
// index = 1
// }
// meController.seekTo(index, C.TIME_UNSET)
// if (!meController.isPlaying) {
// meController.prepare()
// meController.play()
// }
// }
}
}
override fun getItemCount(): Int = list.size
inner class ViewHolder(private val binding: OfflineListItemBinding) :
RecyclerView.ViewHolder(binding.root) {
@SuppressLint("SetTextI18n")
fun bind(bean: OfflineBean) {
binding.apply {
Glide.with(context)
.load(bean.thumbnail)
.into(image)
title.text = bean.title
if (bean.name.isEmpty()) {
name.visibility = View.GONE
} else {
name.visibility = View.VISIBLE
name.text = bean.name
}
size.text = bean.size
val meController = MediaControllerManager.getController()
if (meController != null && meController.currentMediaItem != null) {
if (meController.currentMediaItem?.mediaId == bean.videoId) {
binding.listPlayView.visibility = View.VISIBLE
binding.title.setTextColor(context.getColor(R.color.green))
binding.name.setTextColor(context.getColor(R.color.green_60))
binding.size.setTextColor(context.getColor(R.color.green_60))
} else {
binding.title.setTextColor(context.getColor(R.color.white))
binding.name.setTextColor(context.getColor(R.color.white_60))
binding.size.setTextColor(context.getColor(R.color.white_60))
binding.listPlayView.visibility = View.GONE
}
}
}
}
}
private var itemClickListener: OnItemClickListener? = null
fun setOnItemClickListener(listener: OnItemClickListener) {
itemClickListener = listener
}
interface OnItemClickListener {
fun onItemClick(position: Int)
}
}