gpt4 book ai didi

android - 在 SharedPreferences 中存储 ArrayList 会打乱元素顺序

转载 作者:太空狗 更新时间:2023-10-29 15:42:24 25 4
gpt4 key购买 nike

我正在使用 SharedPreferences 来保存和加载我的 ArrayList,如下所示:(保存)

        SharedPreferences loadGlobalVariables = getSharedPreferences(APP_NAME, 0);
Categories = new ArrayList<String>(loadGlobalVariables.getStringSet("Categories", new HashSet<String>()));

(加载)和这个(它们都工作正常,都正确保存和加载)

 SharedPreferences saveGlobalVariables = getSharedPreferences(APP_NAME, 0);
SharedPreferences.Editor editor = saveGlobalVariables.edit();
editor.putStringSet("Categories", new HashSet<String>(Categories));
editor.commit();

但检索到的 ArrayList 与之前的元素顺序不同。我知道这一点是因为我将此 ArrayList 作为列表放入对话框(每次打开时都会刷新此列表。),通过 Category.toArray(temArray),并且列表不再按字母顺序排列。

之前,这个 ArrayList 按字母顺序排列其中的 String 元素。当我从 SharedPreferences 取回它时,它不再按字母顺序排序。

提前感谢您的帮助。

最佳答案

我用一个技巧克服了这种情况。

  1. 在 SharedPreferences 中首先存储 ArrayList 的大小。
  2. 在 for 循环中将 arraylist 的元素存储到 SharedPreferences 文件中。

现在这是存储为键值对时的技巧,保持键“ArraylistName”+元素的位置

检索时:

  1. 首先获取arrayList的大小
  2. for (i = 0 ; i < sizeOfList ; i++){ 获取键值为“ArrayListName”的元素 + i }

关于android - 在 SharedPreferences 中存储 <String> ArrayList 会打乱元素顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14479479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com