diff --git a/.idea/misc.xml b/.idea/misc.xml
index 61eba887..d751460c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -36,6 +36,7 @@
+
@@ -74,6 +75,8 @@
+
+
@@ -163,12 +166,18 @@
+
+
+
+
+
+
diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/AlbumCatalogueAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/AlbumCatalogueAdapter.java
index 255a9cbc..a40e7770 100644
--- a/app/src/main/java/com/cappielloantonio/play/adapter/AlbumCatalogueAdapter.java
+++ b/app/src/main/java/com/cappielloantonio/play/adapter/AlbumCatalogueAdapter.java
@@ -23,6 +23,8 @@ 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;
@@ -159,4 +161,23 @@ public class AlbumCatalogueAdapter extends RecyclerView.Adapter showPopupMenu(view, R.menu.sort_album_popup_menu));
}
@Override
@@ -144,4 +148,29 @@ public class AlbumCatalogueFragment 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_album_sort_name) {
+ albumAdapter.sort(Album.ORDER_BY_NAME);
+ return true;
+ } else if (menuItem.getItemId() == R.id.menu_album_sort_artist) {
+ albumAdapter.sort(Album.ORDER_BY_ARTIST);
+ return true;
+ } else if (menuItem.getItemId() == R.id.menu_album_sort_year) {
+ albumAdapter.sort(Album.ORDER_BY_YEAR);
+ return true;
+ } else if (menuItem.getItemId() == R.id.menu_album_sort_random) {
+ albumAdapter.sort(Album.ORDER_BY_RANDOM);
+ return true;
+ }
+
+ return false;
+ });
+
+ popup.show();
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_sort_list.xml b/app/src/main/res/drawable/ic_sort_list.xml
new file mode 100644
index 00000000..33efc4a5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_sort_list.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/layout/fragment_album_catalogue.xml b/app/src/main/res/layout/fragment_album_catalogue.xml
index f0eb06f6..8c8764c4 100644
--- a/app/src/main/res/layout/fragment_album_catalogue.xml
+++ b/app/src/main/res/layout/fragment_album_catalogue.xml
@@ -41,6 +41,24 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="parent" />
+
+
diff --git a/app/src/main/res/menu/sort_album_popup_menu.xml b/app/src/main/res/menu/sort_album_popup_menu.xml
new file mode 100644
index 00000000..357be433
--- /dev/null
+++ b/app/src/main/res/menu/sort_album_popup_menu.xml
@@ -0,0 +1,15 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b0b146ac..deb099db 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -217,4 +217,8 @@
Download
Add to queue
Play next
+ Year
+ Artist
+ Name
+ Random
\ No newline at end of file