Android SparseArray删除

时间:2016-02-13 21:33:08

标签: android sparse-matrix

我有最喜欢的名单;

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之前,我显示了两个键和两个值(正常)

Before deleting

但是当我在我最喜欢的列表中删除对象时,我会显示这张图片;

liste.remove(keyID);

在此代码删除值后,我显示已存储密钥。为什么?它的问题对我来说因为在加载后用gson保存这个列表我显示空数据{}但是有关键因此对我来说问题..

After deleting

Sory因为我的英语不好..

1 个答案:

答案 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)