繁体   English   中英

在 SharedPreferences 中保存模型类对象

[英]Save Model class object in SharedPreferences

我是安卓开发的新手。 我将用户配置文件信息保存在共享首选项中,这样每当我需要显示用户名、电子邮件或其他数据时,我都会从共享首选项中调用它,而不是一次又一次地从数据库中调用。 我想保存并获取完整的配置文件,而不是获取单个字符串。 以下是我使用的功能

public void save(String key, String value) {
    SharedPreferences.Editor editor
        = context.getSharedPreferences("data", context.MODE_PRIVATE).edit();
    editor.putString(key, value);
    editor.commit();
}

public String get(String key) {
    SharedPreferences sharedPreferences
        = context.getSharedPreferences("data", context.MODE_PRIVATE);
    return sharedPreferences.getString(key, "");
}

我想要的功能如下

public void save(String key, MyModel object) {
    SharedPreferences.Editor editor
        = context.getSharedPreferences("data", context.MODE_PRIVATE).edit();
    editor.putString(key, object);
    editor.commit();
}

但是共享首选项需要唯一的字符串来保存和获取。 有没有可能的解决方案来保存对象? 或共享首选项的任何替代方案。 (不包括 SQLite 或其他复杂的数据库)

您可以将对象转换为 Json,然后在共享首选项中将其另存为字符串,如下面的代码:

public void save(String key, MyModel object) {
    String myObject = Gson().toJson(object);
    SharedPreferences.Editor editor
        = context.getSharedPreferences("data", context.MODE_PRIVATE).edit();
    editor.putString(key, myObject);
    editor.commit();
}

然后你可以像这样将它转换回对象:

public MyModel get(String key) {
    SharedPreferences sharedPreferences
        = context.getSharedPreferences("data", context.MODE_PRIVATE);
    String myObject = sharedPreferences.getString(key, "");
    return Gson().fromJson(myObject, MyModel.class);
}

这个是用来保存数据的

public void saveData(String key, MyModel object) {
    save(key, new Gson().toJson(object));
}

这个是为了获取数据

public MyModel getData(String key) {
    String data = get(key);
    return new Gson().fromJson(data, MyModel.class);
}

这个怎么运作?

此 save 方法将您的模型对象转换为 JSON 字符串,然后将该字符串保存到共享首选项中,在 get 函数中也是如此。 它以 JSON 字符串的形式获取数据,然后将其转换为您的对象并返回一个值。 为了保存和获取使用您自己的功能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM