【发布时间】:2016-05-24 23:00:15
【问题描述】:
我有最喜欢的列表;
private static SparseArray<MFavori> liste = new SparseArray<>();
我存储了这个 sharedpreferencefiles;
myactivity()
.getSharedPreferences("favori", Context.MODE_PRIVATE)
.edit()
.putString(String.valueOf(key), new Gson().toJson(value))
.apply();
但是当我在保存共享首选项后删除我最喜欢的列表中的对象时。加载之后我显示删除键(因为稀疏数组删除代码不会删除键)并且这个键有空值> {} ...
我正在调试我的应用程序并展示了这个;
在删除 sparsearray 之前,我显示两个键和两个值(正常)
但是当我删除我最喜欢的列表中的对象时,我会显示这张图片;
liste.remove(keyID);
在此代码删除值后,我显示已存储密钥。为什么?这对我来说是个问题,因为在加载后用 gson 保存此列表时,我显示空数据{} 但有密钥,所以对我来说这是个问题..
对不起我的英语不好..
【问题讨论】:
-
您调用 remove() 时的 keyID 是什么?你能显示更多代码吗?我很难理解你想要做什么。
-
第一个列表有两个项目 10391 和 10392。当我使用 > list.remove(10392); 删除 id 时;并调试我显示第二个屏幕。 10392 个键已经存储但值正在删除(键不删除)。
-
保持您的项目按此 ID 排序重要吗?如果没有,你能用 HashMap 代替吗,它可能更适合这种用途?
-
这对我很重要,因为我将 sparsearray 与 Gson 存储到 sharedpreference 中。当刷新我最喜欢的列表并使用 gson 加载 sharedpreference 时,我会显示带有空值的已删除键
-
您也可以将 gson 与 hasmap 一起使用。这样可能会更好。
标签: android sparse-matrix