funkwhale-app-android/app/src/main/java/audio/funkwhale/ffa/adapters/AlbumsAdapter.kt

75 lines
2.2 KiB
Kotlin
Raw Normal View History

package audio.funkwhale.ffa.adapters
2019-08-19 16:50:33 +02:00
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
2021-07-16 10:03:52 +02:00
import audio.funkwhale.ffa.databinding.RowAlbumBinding
import audio.funkwhale.ffa.fragments.FFAAdapter
import audio.funkwhale.ffa.model.Album
import audio.funkwhale.ffa.utils.CoverArt
2019-08-19 16:50:33 +02:00
import jp.wasabeef.picasso.transformations.RoundedCornersTransformation
2021-07-16 10:03:52 +02:00
class AlbumsAdapter(
val layoutInflater: LayoutInflater,
val context: Context?,
private val listener: OnAlbumClickListener
) : FFAAdapter<Album, AlbumsAdapter.ViewHolder>() {
init {
this.stateRestorationPolicy = StateRestorationPolicy.PREVENT_WHEN_EMPTY
}
2019-08-19 16:50:33 +02:00
interface OnAlbumClickListener {
fun onClick(view: View?, album: Album)
}
2021-07-16 10:03:52 +02:00
private lateinit var binding: RowAlbumBinding
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 = RowAlbumBinding.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]
CoverArt.withContext(layoutInflater.context, album.cover())
2019-08-19 16:50:33 +02:00
.fit()
.transform(RoundedCornersTransformation(8, 0))
2019-08-19 16:50:33 +02:00
.into(holder.art)
holder.title.text = album.title
holder.artist.text = album.artist.name
2021-07-16 10:03:52 +02:00
holder.releaseDate.visibility = View.GONE
album.release_date?.split('-')?.getOrNull(0)?.let { year ->
if (year.isNotEmpty()) {
2021-07-16 10:03:52 +02:00
holder.releaseDate.visibility = View.VISIBLE
holder.releaseDate.text = year
}
}
2019-08-19 16:50:33 +02:00
}
2021-07-16 10:03:52 +02:00
inner class ViewHolder(binding: RowAlbumBinding, private val listener: OnAlbumClickListener) :
RecyclerView.ViewHolder(binding.root), View.OnClickListener {
val art = binding.art
val title = binding.title
val artist = binding.artist
val releaseDate = binding.releaseDate
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
}