diff --git a/app/src/main/java/org/oxycblt/auxio/detail/adapters/AlbumDetailAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/adapters/AlbumDetailAdapter.kt index d4aa5d971..fc70addde 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/adapters/AlbumDetailAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/adapters/AlbumDetailAdapter.kt @@ -79,7 +79,7 @@ class AlbumDetailAdapter( } companion object { - const val ALBUM_HEADER_ITEM_TYPE = 0xA024 - const val ALBUM_SONG_ITEM_TYPE = 0xA025 + const val ALBUM_HEADER_ITEM_TYPE = 0xA007 + const val ALBUM_SONG_ITEM_TYPE = 0xA008 } } diff --git a/app/src/main/java/org/oxycblt/auxio/detail/adapters/ArtistDetailAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/adapters/ArtistDetailAdapter.kt index 708cc169e..fe1b49902 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/adapters/ArtistDetailAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/adapters/ArtistDetailAdapter.kt @@ -84,7 +84,7 @@ class ArtistDetailAdapter( } companion object { - const val ARTIST_HEADER_ITEM_TYPE = 0xA022 - const val ARTIST_ALBUM_ITEM_TYPE = 0xA023 + const val ARTIST_HEADER_ITEM_TYPE = 0xA009 + const val ARTIST_ALBUM_ITEM_TYPE = 0xA00A } } diff --git a/app/src/main/java/org/oxycblt/auxio/detail/adapters/GenreDetailAdapter.kt b/app/src/main/java/org/oxycblt/auxio/detail/adapters/GenreDetailAdapter.kt index 210b1d557..6f2c7be66 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/adapters/GenreDetailAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/adapters/GenreDetailAdapter.kt @@ -83,7 +83,7 @@ class GenreDetailAdapter( } companion object { - const val GENRE_HEADER_ITEM_TYPE = 0xA020 - const val GENRE_SONG_ITEM_TYPE = 0xA021 + const val GENRE_HEADER_ITEM_TYPE = 0xA00B + const val GENRE_SONG_ITEM_TYPE = 0xA00C } } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt index 076f2775a..f0216378b 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt @@ -44,7 +44,7 @@ class QueueAdapter( else HeaderViewHolder.ITEM_TYPE else - QUEUE_ITEM_TYPE + QUEUE_SONG_ITEM_TYPE } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { @@ -55,7 +55,7 @@ class QueueAdapter( parent.context, ItemActionHeaderBinding.inflate(LayoutInflater.from(parent.context)) ) - QUEUE_ITEM_TYPE -> QueueSongViewHolder( + QUEUE_SONG_ITEM_TYPE -> QueueSongViewHolder( ItemQueueSongBinding.inflate(LayoutInflater.from(parent.context)) ) @@ -182,7 +182,7 @@ class QueueAdapter( } companion object { - const val QUEUE_ITEM_TYPE = 0xA015 - const val USER_QUEUE_HEADER_ITEM_TYPE = 0xA016 + const val QUEUE_SONG_ITEM_TYPE = 0xA005 + const val USER_QUEUE_HEADER_ITEM_TYPE = 0xA006 } } diff --git a/app/src/main/java/org/oxycblt/auxio/recycler/viewholders/ModelHolders.kt b/app/src/main/java/org/oxycblt/auxio/recycler/viewholders/ModelHolders.kt index c32a2f101..c9e3eefc0 100644 --- a/app/src/main/java/org/oxycblt/auxio/recycler/viewholders/ModelHolders.kt +++ b/app/src/main/java/org/oxycblt/auxio/recycler/viewholders/ModelHolders.kt @@ -19,66 +19,52 @@ import org.oxycblt.auxio.recycler.viewholders.GenreViewHolder.Companion.from import org.oxycblt.auxio.recycler.viewholders.HeaderViewHolder.Companion.from import org.oxycblt.auxio.recycler.viewholders.SongViewHolder.Companion.from -/** - * The Shared ViewHolder for a [Genre]. Instantiation should be done with [from]. +/* + * A table of all ViewHolder codes. Please add to these so that all viewholder codes are unique. + * SongViewHolder -> 0xA000 + * AlbumViewHolder -> 0xA001 + * ArtistViewHolder -> 0xA002 + * GenreViewHolder -> 0xA003 + * HeaderViewHolder -> 0xA004 + * QueueSongViewHolder -> 0xA005 + * UserQueueHeaderViewHolder -> 0xA006 + * AlbumHeaderViewHolder -> 0xA007 + * AlbumSongViewHolder -> 0xA008 + * ArtistHeaderViewHolder -> 0xA009 + * ArtistAlbumViewHolder -> 0xA00A + * GenreHeaderViewHolder -> 0xA00B + * GenreSongViewHolder -> 0xA00C */ -class GenreViewHolder private constructor( - private val binding: ItemGenreBinding, - doOnClick: (Genre) -> Unit, - doOnLongClick: (data: Genre, view: View) -> Unit -) : BaseViewHolder(binding, doOnClick, doOnLongClick) { - override fun onBind(data: Genre) { - binding.genre = data - binding.genreName.requestLayout() +/** + * The Shared ViewHolder for a [Song]. Instantiation should be done with [from]. + */ +class SongViewHolder private constructor( + private val binding: ItemSongBinding, + doOnClick: (data: Song) -> Unit, + doOnLongClick: (data: Song, view: View) -> Unit +) : BaseViewHolder(binding, doOnClick, doOnLongClick) { + + override fun onBind(data: Song) { + binding.song = data + + binding.songName.requestLayout() + binding.songInfo.requestLayout() } companion object { - const val ITEM_TYPE = 0xA010 + const val ITEM_TYPE = 0xA000 /** - * Create an instance of [GenreViewHolder] + * Create an instance of [SongViewHolder] */ fun from( context: Context, - doOnClick: (Genre) -> Unit, - doOnLongClick: (data: Genre, view: View) -> Unit - ): GenreViewHolder { - return GenreViewHolder( - ItemGenreBinding.inflate(LayoutInflater.from(context)), - doOnClick, doOnLongClick - ) - } - } -} - -/** - * The Shared ViewHolder for a [Artist]. Instantiation should be done with [from]. - */ -class ArtistViewHolder private constructor( - private val binding: ItemArtistBinding, - doOnClick: (Artist) -> Unit, - doOnLongClick: (data: Artist, view: View) -> Unit -) : BaseViewHolder(binding, doOnClick, doOnLongClick) { - - override fun onBind(data: Artist) { - binding.artist = data - binding.artistName.requestLayout() - } - - companion object { - const val ITEM_TYPE = 0xA011 - - /** - * Create an instance of [ArtistViewHolder] - */ - fun from( - context: Context, - doOnClick: (Artist) -> Unit, - doOnLongClick: (data: Artist, view: View) -> Unit - ): ArtistViewHolder { - return ArtistViewHolder( - ItemArtistBinding.inflate(LayoutInflater.from(context)), + doOnClick: (data: Song) -> Unit, + doOnLongClick: (data: Song, view: View) -> Unit + ): SongViewHolder { + return SongViewHolder( + ItemSongBinding.inflate(LayoutInflater.from(context)), doOnClick, doOnLongClick ) } @@ -100,7 +86,7 @@ class AlbumViewHolder private constructor( } companion object { - const val ITEM_TYPE = 0xA012 + const val ITEM_TYPE = 0xA001 /** * Create an instance of [AlbumViewHolder] @@ -119,34 +105,65 @@ class AlbumViewHolder private constructor( } /** - * The Shared ViewHolder for a [Song]. Instantiation should be done with [from]. + * The Shared ViewHolder for a [Artist]. Instantiation should be done with [from]. */ -class SongViewHolder private constructor( - private val binding: ItemSongBinding, - doOnClick: (data: Song) -> Unit, - doOnLongClick: (data: Song, view: View) -> Unit -) : BaseViewHolder(binding, doOnClick, doOnLongClick) { +class ArtistViewHolder private constructor( + private val binding: ItemArtistBinding, + doOnClick: (Artist) -> Unit, + doOnLongClick: (data: Artist, view: View) -> Unit +) : BaseViewHolder(binding, doOnClick, doOnLongClick) { - override fun onBind(data: Song) { - binding.song = data - - binding.songName.requestLayout() - binding.songInfo.requestLayout() + override fun onBind(data: Artist) { + binding.artist = data + binding.artistName.requestLayout() } companion object { - const val ITEM_TYPE = 0xA013 + const val ITEM_TYPE = 0xA002 /** - * Create an instance of [SongViewHolder] + * Create an instance of [ArtistViewHolder] */ fun from( context: Context, - doOnClick: (data: Song) -> Unit, - doOnLongClick: (data: Song, view: View) -> Unit - ): SongViewHolder { - return SongViewHolder( - ItemSongBinding.inflate(LayoutInflater.from(context)), + doOnClick: (Artist) -> Unit, + doOnLongClick: (data: Artist, view: View) -> Unit + ): ArtistViewHolder { + return ArtistViewHolder( + ItemArtistBinding.inflate(LayoutInflater.from(context)), + doOnClick, doOnLongClick + ) + } + } +} + +/** + * The Shared ViewHolder for a [Genre]. Instantiation should be done with [from]. + */ +class GenreViewHolder private constructor( + private val binding: ItemGenreBinding, + doOnClick: (Genre) -> Unit, + doOnLongClick: (data: Genre, view: View) -> Unit +) : BaseViewHolder(binding, doOnClick, doOnLongClick) { + + override fun onBind(data: Genre) { + binding.genre = data + binding.genreName.requestLayout() + } + + companion object { + const val ITEM_TYPE = 0xA003 + + /** + * Create an instance of [GenreViewHolder] + */ + fun from( + context: Context, + doOnClick: (Genre) -> Unit, + doOnLongClick: (data: Genre, view: View) -> Unit + ): GenreViewHolder { + return GenreViewHolder( + ItemGenreBinding.inflate(LayoutInflater.from(context)), doOnClick, doOnLongClick ) } @@ -165,7 +182,7 @@ class HeaderViewHolder( } companion object { - const val ITEM_TYPE = 0xA014 + const val ITEM_TYPE = 0xA004 /** * Create an instance of [HeaderViewHolder]