简体   繁体   English

如何将 Map 保存到共享首选项?

[英]How to save Map to Shared Preferences?

I have an Map<Integer, User> with custom values.我有一个带有自定义值的Map<Integer, User> Each User contains variety of strings and numbers.每个用户都包含各种字符串和数字。 I can save a singel User but safe the entire Map is difficult.我可以保存一个用户,但很难保护整个 Map。 (I save a lot of other objects this way by using the SharedPreferences but I can't figure out how to save my entire Map this way. Is this possible? Maybe SharedPreferences isn't the way to go about this? Is there a simpler method?) (我通过使用 SharedPreferences 以这种方式保存了很多其他对象,但我不知道如何以这种方式保存我的整个 Map。这可能吗?也许 SharedPreferences 不是 go 的方法吗?有没有更简单的方法方法?)

Shared Preference Class:共享偏好 Class:

Map Map

public void saveUserMap(Map<Integer, User> userMap){
        SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();

        editor.putInt("userID", userMap.get(userMap).getUserID());
        editor.putString("firstName", userMap.get(userMap).getFirstName());
        editor.putString("userName", userMap.get(userMap).getUserName());
        editor.putString("birthDate", userMap.get(userMap).getBirthDate());
        editor.putString("gender", userMap.get(userMap).getGender());
        editor.putString("country", userMap.get(userMap).getCountry());
        editor.putString("aboutmeText", userMap.get(userMap).getAboutmeText());
        editor.putString("status", userMap.get(userMap).getStatus());

        editor.apply();
    }

Single User:单用户:

public void saveUser(User user){
        SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();

        editor.putInt("userID", user.getUserID());
        editor.putString("firstName", user.getFirstName());
        editor.putString("userName", user.getUserName());
        editor.putString("birthDate", user.getBirthDate());
        editor.putString("gender", userMap.get(userMap).getGender());
        editor.putString("country", user.getCountry());
        editor.putString("aboutmeText", user.getAboutmeText());
        editor.putString("status", user.getStatus());
       
        editor.apply();
}

Save a Single User is possible:可以保存单个用户:

SharedPrefManager.getInstance(TestRequest.this)
                            .saveUser(standardResponse.getUser().get(0));

Save User Map crash:保存用户 Map 崩溃:

SharedPrefManager.getInstance(TestRequest.this)
                            .saveUserMap(standardResponse.getUser());

在此处输入图像描述

You can serialise user object to json(using GSON or Moshi) and save the JSON into shared Pref.您可以将用户 object 序列化为 json(使用 GSON 或 Moshi)并将 JSON 保存到共享首选项中。

public void saveUserMap(User user){
        SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();

        editor.putString("mUser", new Gson().toJson(user));

        editor.apply();
    }

Other options for save objects are a number of ORMs for Android (ORMLite, greenDAO, Sugar ORM, ActiveAndroid, etc.)保存对象的其他选项是一些用于 Android 的 ORM(ORMLite、greenDAO、Sugar ORM、ActiveAndroid 等)

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

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