我有最喜欢的名单;
private static SparseArray<MFavori> liste = new SparseArray<>();
我存储了这个共享偏好文件;
myactivity()
.getSharedPreferences("favori", Context.MODE_PRIVATE)
.edit()
.putString(String.valueOf(key), new Gson().toJson(value))
.apply();
但是当我在保存共享偏好后删除我喜欢的列表中的对象时。加载之后我显示删除键(因为稀疏数组删除代码不会删除键)并且此键具有空值&gt; {} ...
我正在调试我的应用程序,我展示了这个;
在删除sparsearray之前,我显示了两个键和两个值(正常)
但是当我在我最喜欢的列表中删除对象时,我会显示这张图片;
liste.remove(keyID);
在此代码删除值后,我显示已存储密钥。为什么?它的问题对我来说因为在加载后用gson保存这个列表我显示空数据{}但是有关键因此对我来说问题..
Sory因为我的英语不好..
答案 0 :(得分:0)
看起来这是按预期工作的。 SparseArray.remove()
的来源会重置映射到&#39; keyID&#39;的项目的值。使用默认对象并设置一个标志以指示需要进行垃圾回收。文档没有说明删除密钥和值的任何内容。来自SparseArray.remove()
调用的删除方法:
/**
* Removes the mapping from the specified key, if there was any.
*/
public void delete(int key)