2021-07-12 10:14:26 +02:00
|
|
|
package audio.funkwhale.ffa.adapters
|
2019-08-19 16:50:33 +02:00
|
|
|
|
|
|
|
import android.view.LayoutInflater
|
|
|
|
import android.view.View
|
|
|
|
import android.view.ViewGroup
|
|
|
|
import androidx.recyclerview.widget.RecyclerView
|
2021-07-12 10:14:26 +02:00
|
|
|
import audio.funkwhale.ffa.R
|
2021-07-16 10:03:52 +02:00
|
|
|
import audio.funkwhale.ffa.databinding.RowAlbumGridBinding
|
|
|
|
import audio.funkwhale.ffa.fragments.FFAAdapter
|
2021-08-22 09:48:33 +02:00
|
|
|
import audio.funkwhale.ffa.model.Album
|
2023-01-10 11:00:41 +01:00
|
|
|
import audio.funkwhale.ffa.utils.CoverArt
|
2021-07-12 10:14:26 +02:00
|
|
|
import audio.funkwhale.ffa.utils.maybeNormalizeUrl
|
2019-08-19 16:50:33 +02:00
|
|
|
import jp.wasabeef.picasso.transformations.RoundedCornersTransformation
|
|
|
|
|
2021-07-16 10:03:52 +02:00
|
|
|
class AlbumsGridAdapter(
|
|
|
|
private val layoutInflater: LayoutInflater,
|
|
|
|
private val listener: OnAlbumClickListener
|
|
|
|
) : FFAAdapter<Album, AlbumsGridAdapter.ViewHolder>() {
|
|
|
|
|
|
|
|
private lateinit var binding: RowAlbumGridBinding
|
|
|
|
|
2019-08-19 16:50:33 +02:00
|
|
|
interface OnAlbumClickListener {
|
|
|
|
fun onClick(view: View?, album: Album)
|
|
|
|
}
|
|
|
|
|
2020-07-11 18:15:40 +02:00
|
|
|
override fun getItemId(position: Int): Long = data[position].id.toLong()
|
|
|
|
|
2019-08-19 16:50:33 +02:00
|
|
|
override fun getItemCount() = data.size
|
|
|
|
|
|
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
|
|
|
|
2021-07-16 10:03:52 +02:00
|
|
|
binding = RowAlbumGridBinding.inflate(layoutInflater, parent, false)
|
|
|
|
|
|
|
|
return ViewHolder(binding, listener).also {
|
|
|
|
binding.root.setOnClickListener(it)
|
2019-08-19 16:50:33 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
|
|
|
val album = data[position]
|
|
|
|
|
2023-01-10 11:00:41 +01:00
|
|
|
CoverArt.withContext(layoutInflater.context, maybeNormalizeUrl(album.cover()))
|
2019-08-19 16:50:33 +02:00
|
|
|
.fit()
|
|
|
|
.placeholder(R.drawable.cover)
|
2020-05-29 21:40:01 +02:00
|
|
|
.transform(RoundedCornersTransformation(16, 0))
|
2019-08-19 16:50:33 +02:00
|
|
|
.into(holder.cover)
|
|
|
|
|
|
|
|
holder.title.text = album.title
|
|
|
|
}
|
|
|
|
|
2021-07-16 10:03:52 +02:00
|
|
|
inner class ViewHolder(binding: RowAlbumGridBinding, private val listener: OnAlbumClickListener) :
|
|
|
|
RecyclerView.ViewHolder(binding.root), View.OnClickListener {
|
|
|
|
val cover = binding.cover
|
|
|
|
val title = binding.title
|
2019-08-19 16:50:33 +02:00
|
|
|
|
|
|
|
override fun onClick(view: View?) {
|
|
|
|
listener.onClick(view, data[layoutPosition])
|
|
|
|
}
|
|
|
|
}
|
2021-07-02 13:55:49 +02:00
|
|
|
}
|