99 lines
3.6 KiB
Kotlin
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)
|
|
}
|
|
} |