From e6b997bc358961ff425e20fbe346609753c03c39 Mon Sep 17 00:00:00 2001 From: antonio Date: Thu, 24 Mar 2022 22:21:57 +0100 Subject: [PATCH] Added the ability to sort items in the artist catalogue --- .../play/adapter/ArtistCatalogueAdapter.java | 16 +++++++++++++ .../cappielloantonio/play/model/Artist.java | 3 +++ .../ui/fragment/ArtistCatalogueFragment.java | 24 +++++++++++++++++++ .../res/layout/fragment_artist_catalogue.xml | 18 ++++++++++++++ .../main/res/menu/sort_artist_popup_menu.xml | 9 +++++++ 5 files changed, 70 insertions(+) create mode 100644 app/src/main/res/menu/sort_artist_popup_menu.xml diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/ArtistCatalogueAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/ArtistCatalogueAdapter.java index a4ee180b..e1df218a 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/ArtistCatalogueAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/ArtistCatalogueAdapter.java @@ -18,11 +18,14 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.cappielloantonio.play.R; import com.cappielloantonio.play.glide.CustomGlideRequest; +import com.cappielloantonio.play.model.Album; import com.cappielloantonio.play.model.Artist; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.MusicUtil; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Objects; @@ -160,4 +163,17 @@ public class ArtistCatalogueAdapter extends RecyclerView.Adapter albums; private List similarArtists; diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistCatalogueFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistCatalogueFragment.java index 8db937db..df262f79 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistCatalogueFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistCatalogueFragment.java @@ -11,6 +11,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; +import android.widget.PopupMenu; import android.widget.SearchView; import androidx.annotation.NonNull; @@ -25,6 +26,8 @@ import com.cappielloantonio.play.R; import com.cappielloantonio.play.adapter.ArtistCatalogueAdapter; import com.cappielloantonio.play.databinding.FragmentArtistCatalogueBinding; import com.cappielloantonio.play.helper.recyclerview.GridItemDecoration; +import com.cappielloantonio.play.model.Album; +import com.cappielloantonio.play.model.Artist; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.viewmodel.ArtistCatalogueViewModel; @@ -113,6 +116,8 @@ public class ArtistCatalogueFragment extends Fragment { hideKeyboard(v); return false; }); + + bind.artistListSortImageView.setOnClickListener(view -> showPopupMenu(view, R.menu.sort_artist_popup_menu)); } @Override @@ -144,4 +149,23 @@ public class ArtistCatalogueFragment extends Fragment { InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); } + + private void showPopupMenu(View view, int menuResource) { + PopupMenu popup = new PopupMenu(requireContext(), view); + popup.getMenuInflater().inflate(menuResource, popup.getMenu()); + + popup.setOnMenuItemClickListener(menuItem -> { + if (menuItem.getItemId() == R.id.menu_artist_sort_name) { + artistAdapter.sort(Artist.ORDER_BY_NAME); + return true; + } else if (menuItem.getItemId() == R.id.menu_artist_sort_random) { + artistAdapter.sort(Artist.ORDER_BY_RANDOM); + return true; + } + + return false; + }); + + popup.show(); + } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_artist_catalogue.xml b/app/src/main/res/layout/fragment_artist_catalogue.xml index da98af7b..77301e30 100644 --- a/app/src/main/res/layout/fragment_artist_catalogue.xml +++ b/app/src/main/res/layout/fragment_artist_catalogue.xml @@ -41,6 +41,24 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="parent" /> + +