From 9760bafb8aff0072925fe4386ed833196eec2ab1 Mon Sep 17 00:00:00 2001 From: SSimco <37044560+SSimco@users.noreply.github.com> Date: Tue, 9 Apr 2024 08:13:09 +0300 Subject: [PATCH] Fix crash in graphic packs fragment --- .../main/java/info/cemu/Cemu/GraphicPacksFragment.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/android/app/src/main/java/info/cemu/Cemu/GraphicPacksFragment.java b/src/android/app/src/main/java/info/cemu/Cemu/GraphicPacksFragment.java index 8efc2c71..2aef5cd9 100644 --- a/src/android/app/src/main/java/info/cemu/Cemu/GraphicPacksFragment.java +++ b/src/android/app/src/main/java/info/cemu/Cemu/GraphicPacksFragment.java @@ -17,6 +17,7 @@ import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.function.Consumer; +import java.util.stream.IntStream; import info.cemu.Cemu.databinding.FragmentGraphicPacksBinding; @@ -81,7 +82,8 @@ public class GraphicPacksFragment extends Fragment { private void fillPresets(NativeLibrary.GraphicPack graphicPack) { var recyclerViewItems = new ArrayList>(); - graphicPack.presets.forEach(graphicPackPreset -> { + IntStream.range(0, graphicPack.presets.size()).forEach(index -> { + var graphicPackPreset = graphicPack.presets.get(index); String category = graphicPackPreset.getCategory(); if (category == null) category = getString(R.string.active_preset_category); var recyclerViewItem = new SingleSelectionRecyclerViewItem<>( @@ -92,11 +94,11 @@ public class GraphicPacksFragment extends Fragment { graphicPackPreset.getActivePreset() ), (selectedValue, selectionRecyclerViewItem) -> { - graphicPackPreset.setActivePreset(selectedValue); - selectionRecyclerViewItem.setDescription(selectedValue); var oldPresets = graphicPack.presets; + graphicPack.presets.get(index).setActivePreset(selectedValue); + selectionRecyclerViewItem.setDescription(selectedValue); graphicPack.reloadPresets(); - if (!new HashSet<>(oldPresets).containsAll(graphicPack.presets)) { + if (!oldPresets.equals(graphicPack.presets)) { recyclerViewItems.forEach(genericRecyclerViewAdapter::removeRecyclerViewItem); fillPresets(graphicPack); }