代码之家  ›  专栏  ›  技术社区  ›  Jack

如何以灵活的方式将数据保存到SharedReference

  •  2
  • Jack  · 技术社区  · 7 年前

    我将所选项目保存到共享首选项中,但当用户在运行时删除这些项目中的任何一个(从任何位置)时,当我使用保存的大小(在下面的代码中)循环遍历这些项目时,问题就来了

    假设我有5个项目(项目1-项目2-项目3-项目4-项目5)

    如果用户删除了item\u 2,我会将selected\u items\u size更新为4,并从共享首选项中删除item\u 2。

    但是,当我稍后加载这些项目时,我使用了(size=现在是4),正如下面的代码中所示,它将丢失项目5,如何解决这个问题,有什么建议或更好的方法来实现我所需要的吗?

        mSharedPreference = getSharedPreferences("chosen_items", MODE_PRIVATE);
        int size = mSharedPreference.getInt("chosen_items_size", 0);
        for(int i = 1; i <= size; i++) {
    
           mSharedPreference.getString("item_" + i, null);
    
        }
    

    知道我想启用拖放项目,使用上述方法将很难(如果可能的话)完成,任何更好的保存方法&是否检索数据/项目?

    非常感谢。

    2 回复  |  直到 7 年前
        1
  •  3
  •   urgentx Galeb Nassri    7 年前

    如果有少量字符串,可以将它们存储在SharedReferences中的一个分隔字符串中,如 so . 您还可以将一些元数据与每个项相关联,并对其进行分隔。

        2
  •  2
  •   Notsileous    7 年前

    您可以利用内置的SQL lite数据库。
    这是会话之间必须保留的数据吗?如果没有,则使用类和静态变量/数组将其存储在本地。