diff --git a/app/src/main/java/org/oxycblt/auxio/detail/recycler/AlbumDetailAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/recycler/AlbumDetailAdapter.kt index c11dea1d5..6e3a2973b 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/recycler/AlbumDetailAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/recycler/AlbumDetailAdapter.kt @@ -81,9 +81,7 @@ class AlbumDetailAdapter(listener: Listener) : } } - override fun onHighlightViewHolder(viewHolder: Highlightable, item: Item) { - viewHolder.setHighlighted(item.id == currentSong?.id) - } + override fun shouldHighlightViewHolder(item: Item) = item.id == currentSong?.id /** Update the [song] that this adapter should highlight */ fun highlightSong(song: Song?) { @@ -189,7 +187,7 @@ class DiscHeaderViewHolder(private val binding: ItemDiscHeaderBinding) : } private class AlbumSongViewHolder private constructor(private val binding: ItemAlbumSongBinding) : - BindingViewHolder(binding.root), Highlightable { + BindingViewHolder(binding.root) { override fun bind(item: Song, listener: MenuItemListener) { // Hide the track number view if the song does not have a track. if (item.track != null) { @@ -227,10 +225,6 @@ private class AlbumSongViewHolder private constructor(private val binding: ItemA } } - override fun setHighlighted(isHighlighted: Boolean) { - binding.root.isActivated = isHighlighted - } - companion object { val CREATOR = object : Creator { diff --git a/app/src/main/java/org/oxycblt/auxio/detail/recycler/ArtistDetailAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/recycler/ArtistDetailAdapter.kt index a2d0033b2..d7204ae14 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/recycler/ArtistDetailAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/recycler/ArtistDetailAdapter.kt @@ -85,11 +85,9 @@ class ArtistDetailAdapter(listener: Listener) : } } - override fun onHighlightViewHolder(viewHolder: Highlightable, item: Item) { - viewHolder.setHighlighted( - (item is Album && item.id == currentAlbum?.id) || - (item is Song && item.id == currentSong?.id)) - } + override fun shouldHighlightViewHolder(item: Item) = + (item is Album && item.id == currentAlbum?.id) || + (item is Song && item.id == currentSong?.id) /** Update the current [album] that this adapter should highlight */ fun highlightAlbum(album: Album?) { @@ -169,7 +167,7 @@ private class ArtistDetailViewHolder private constructor(private val binding: It private class ArtistAlbumViewHolder private constructor( private val binding: ItemParentBinding, -) : BindingViewHolder(binding.root), Highlightable { +) : BindingViewHolder(binding.root) { override fun bind(item: Album, listener: MenuItemListener) { binding.parentImage.bind(item) binding.parentName.textSafe = item.resolveName(binding.context) @@ -189,10 +187,6 @@ private constructor( } } - override fun setHighlighted(isHighlighted: Boolean) { - binding.parentName.isActivated = isHighlighted - } - companion object { val CREATOR = object : Creator { @@ -214,7 +208,7 @@ private constructor( private class ArtistSongViewHolder private constructor( private val binding: ItemSongBinding, -) : BindingViewHolder(binding.root), Highlightable { +) : BindingViewHolder(binding.root) { override fun bind(item: Song, listener: MenuItemListener) { binding.songAlbumCover.bind(item) binding.songName.textSafe = item.resolveName(binding.context) @@ -229,10 +223,6 @@ private constructor( } } - override fun setHighlighted(isHighlighted: Boolean) { - binding.root.isActivated = isHighlighted - } - companion object { val CREATOR = object : Creator { diff --git a/app/src/main/java/org/oxycblt/auxio/detail/recycler/DetailAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/recycler/DetailAdapter.kt index 7a18abd15..26207d293 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/recycler/DetailAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/recycler/DetailAdapter.kt @@ -41,7 +41,7 @@ abstract class DetailAdapter( listener: L, diffCallback: DiffUtil.ItemCallback ) : MultiAdapter(listener) { - abstract fun onHighlightViewHolder(viewHolder: Highlightable, item: Item) + abstract fun shouldHighlightViewHolder(item: Item): Boolean protected inline fun highlightItem(newItem: T?): Int? { if (newItem == null) { @@ -84,9 +84,7 @@ abstract class DetailAdapter( } } - if (viewHolder is Highlightable) { - onHighlightViewHolder(viewHolder, item) - } + viewHolder.itemView.isActivated = shouldHighlightViewHolder(item) } companion object { @@ -147,8 +145,3 @@ class SortHeaderViewHolder(private val binding: ItemSortHeaderBinding) : } } } - -/** Interface that allows the highlighting of certain ViewHolders */ -interface Highlightable { - fun setHighlighted(isHighlighted: Boolean) -} diff --git a/app/src/main/java/org/oxycblt/auxio/detail/recycler/GenreDetailAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/recycler/GenreDetailAdapter.kt index c4bc29163..bca83ef49 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/recycler/GenreDetailAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/recycler/GenreDetailAdapter.kt @@ -77,9 +77,7 @@ class GenreDetailAdapter(listener: Listener) : } } - override fun onHighlightViewHolder(viewHolder: Highlightable, item: Item) { - viewHolder.setHighlighted(item.id == currentSong?.id) - } + override fun shouldHighlightViewHolder(item: Item) = item.id == currentSong?.id /** Update the [song] that this adapter should highlight */ fun highlightSong(song: Song?) { @@ -138,7 +136,7 @@ private class GenreDetailViewHolder private constructor(private val binding: Ite } class GenreSongViewHolder private constructor(private val binding: ItemSongBinding) : - BindingViewHolder(binding.root), Highlightable { + BindingViewHolder(binding.root) { override fun bind(item: Song, listener: MenuItemListener) { binding.songAlbumCover.bind(item) binding.songName.textSafe = item.resolveName(binding.context) @@ -152,10 +150,6 @@ class GenreSongViewHolder private constructor(private val binding: ItemSongBindi } } - override fun setHighlighted(isHighlighted: Boolean) { - binding.songName.isActivated = isHighlighted - } - companion object { val CREATOR = object : Creator {