diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/utils/AppDialogUtil.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/utils/AppDialogUtil.java index 2e984b1f88..b1d65b885c 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/utils/AppDialogUtil.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/utils/AppDialogUtil.java @@ -1092,7 +1092,16 @@ private static void appendPlaylistDialogContent( Context context, Video video, VideoMenuCallback callback, AppDialogPresenter dialogPresenter, List playlistInfos) { List options = new ArrayList<>(); - for (PlaylistInfo playlistInfo : playlistInfos) { + // Sort playlists alphabetically so their position stays stable instead of + // shuffling around in most-recently-used order (see issue #5904). + List sortedPlaylistInfos = new ArrayList<>(playlistInfos); + Collections.sort(sortedPlaylistInfos, (info1, info2) -> { + String title1 = info1.getTitle() != null ? info1.getTitle() : ""; + String title2 = info2.getTitle() != null ? info2.getTitle() : ""; + return title1.compareToIgnoreCase(title2); + }); + + for (PlaylistInfo playlistInfo : sortedPlaylistInfos) { options.add(UiOptionItem.from( playlistInfo.getTitle(), (item) -> {