From 5827ca492cc0578a7e61420473be43a415e1fbea Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Wed, 2 Sep 2020 19:50:47 -0600 Subject: [PATCH] Add click listeners to Song/Album items Add the ripple selection effect & the click listener to the song and album items. --- .../java/org/oxycblt/auxio/library/LibraryFragment.kt | 8 +++++++- .../java/org/oxycblt/auxio/loading/LoadingFragment.kt | 6 ++---- .../oxycblt/auxio/recycler/adapters/AlbumAdapter.kt | 10 +++++++++- .../org/oxycblt/auxio/recycler/adapters/SongAdapter.kt | 10 +++++++++- .../auxio/recycler/viewholders/AlbumViewHolder.kt | 2 +- .../auxio/recycler/viewholders/ClickListener.kt | 4 +--- .../auxio/recycler/viewholders/SongViewHolder.kt | 2 +- .../main/java/org/oxycblt/auxio/songs/SongsFragment.kt | 8 +++++++- app/src/main/res/drawable/ripple.xml | 3 --- app/src/main/res/layout/album_item.xml | 3 +++ app/src/main/res/layout/song_item.xml | 3 +++ 11 files changed, 43 insertions(+), 16 deletions(-) delete mode 100644 app/src/main/res/drawable/ripple.xml diff --git a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt index 81b1e8342..9d557af78 100644 --- a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt @@ -12,6 +12,7 @@ import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentLibraryBinding import org.oxycblt.auxio.recycler.adapters.AlbumAdapter import org.oxycblt.auxio.recycler.applyDivider +import org.oxycblt.auxio.recycler.viewholders.ClickListener class LibraryFragment : Fragment() { @@ -28,7 +29,12 @@ class LibraryFragment : Fragment() { inflater, R.layout.fragment_library, container, false ) - binding.libraryRecycler.adapter = AlbumAdapter(libraryModel.albums.value!!) + binding.libraryRecycler.adapter = AlbumAdapter( + libraryModel.albums.value!!, + ClickListener { album -> + Log.d(this::class.simpleName, album.title) + } + ) binding.libraryRecycler.applyDivider() binding.libraryRecycler.setHasFixedSize(true) diff --git a/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt b/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt index cd18ee15e..857263233 100644 --- a/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt @@ -64,8 +64,8 @@ class LoadingFragment : Fragment() { ) // Set up the permission launcher, as its disallowed outside of onCreate. - permLauncher = registerForActivityResult(ActivityResultContracts.RequestPermission()) - { granted: Boolean -> + permLauncher = + registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted: Boolean -> // If its actually granted, restart the loading process again. if (granted) { @@ -82,7 +82,6 @@ class LoadingFragment : Fragment() { // This never seems to return true but Im apparently supposed to use it so if (shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE)) { onMusicLoadResponse(MusicLoaderResponse.NO_PERMS) - } else { loadingModel.go() } @@ -100,7 +99,6 @@ class LoadingFragment : Fragment() { this.findNavController().navigate( LoadingFragmentDirections.actionToMain() ) - } else { // If the response wasn't a success, then show the specific error message // depending on which error response was given, along with a retry or grant button diff --git a/app/src/main/java/org/oxycblt/auxio/recycler/adapters/AlbumAdapter.kt b/app/src/main/java/org/oxycblt/auxio/recycler/adapters/AlbumAdapter.kt index 0fcde37e0..2c5018b74 100644 --- a/app/src/main/java/org/oxycblt/auxio/recycler/adapters/AlbumAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/recycler/adapters/AlbumAdapter.kt @@ -6,8 +6,12 @@ import androidx.recyclerview.widget.RecyclerView import org.oxycblt.auxio.databinding.AlbumItemBinding import org.oxycblt.auxio.music.models.Album import org.oxycblt.auxio.recycler.viewholders.AlbumViewHolder +import org.oxycblt.auxio.recycler.viewholders.ClickListener -class AlbumAdapter(private val data: List) : RecyclerView.Adapter() { +class AlbumAdapter( + private val data: List, + private val listener: ClickListener +) : RecyclerView.Adapter() { override fun getItemCount(): Int = data.size @@ -25,6 +29,10 @@ class AlbumAdapter(private val data: List) : RecyclerView.Adapter) : RecyclerView.Adapter() { +class SongAdapter( + private val data: List, + private val listener: ClickListener +) : RecyclerView.Adapter() { override fun getItemCount(): Int = data.size @@ -25,6 +29,10 @@ class SongAdapter(private val data: List) : RecyclerView.Adapter(val action: (T) -> Unit) { - fun onClick(action: T) = action -} +class ClickListener(val onClick: (T) -> Unit) diff --git a/app/src/main/java/org/oxycblt/auxio/recycler/viewholders/SongViewHolder.kt b/app/src/main/java/org/oxycblt/auxio/recycler/viewholders/SongViewHolder.kt index 775eccb12..3de59aaec 100644 --- a/app/src/main/java/org/oxycblt/auxio/recycler/viewholders/SongViewHolder.kt +++ b/app/src/main/java/org/oxycblt/auxio/recycler/viewholders/SongViewHolder.kt @@ -6,7 +6,7 @@ import org.oxycblt.auxio.music.models.Song // Generic ViewHolder for a song class SongViewHolder( - private var binding: SongItemBinding + private val binding: SongItemBinding ) : RecyclerView.ViewHolder(binding.root) { // Bind the view w/new data diff --git a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt index 8dd85bfbe..562e1144d 100644 --- a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt @@ -12,6 +12,7 @@ import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentSongsBinding import org.oxycblt.auxio.recycler.adapters.SongAdapter import org.oxycblt.auxio.recycler.applyDivider +import org.oxycblt.auxio.recycler.viewholders.ClickListener class SongsFragment : Fragment() { @@ -28,7 +29,12 @@ class SongsFragment : Fragment() { inflater, R.layout.fragment_songs, container, false ) - binding.songRecycler.adapter = SongAdapter(songsModel.songs.value!!) + binding.songRecycler.adapter = SongAdapter( + songsModel.songs.value!!, + ClickListener { song -> + Log.d(this::class.simpleName, song.title) + } + ) binding.songRecycler.applyDivider() binding.songRecycler.setHasFixedSize(true) diff --git a/app/src/main/res/drawable/ripple.xml b/app/src/main/res/drawable/ripple.xml deleted file mode 100644 index 53234f8f6..000000000 --- a/app/src/main/res/drawable/ripple.xml +++ /dev/null @@ -1,3 +0,0 @@ - - \ No newline at end of file diff --git a/app/src/main/res/layout/album_item.xml b/app/src/main/res/layout/album_item.xml index b3228814a..a680aa7f9 100644 --- a/app/src/main/res/layout/album_item.xml +++ b/app/src/main/res/layout/album_item.xml @@ -13,6 +13,9 @@