【问题标题】:How to save Map to Shared Preferences?如何将地图保存到共享首选项?
【发布时间】:2021-05-31 11:24:39
【问题描述】:

我有一个带有自定义值的Map<Integer, User>。每个用户都包含各种字符串和数字。我可以保存单个用户,但很难保证整个地图的安全。 (我通过使用 SharedPreferences 以这种方式保存了许多其他对象,但我不知道如何以这种方式保存我的整个 Map。这可能吗?也许 SharedPreferences 不是解决这个问题的方法吗?有没有更简单的方法方法?)

共享偏好类:

地图

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();
    }

单用户:

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();
}

可以保存单个用户:

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

保存用户地图崩溃:

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

【问题讨论】:

    标签: java android sharedpreferences


    【解决方案1】:

    您可以将用户对象序列化为 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();
        }
    

    保存对象的其他选项是许多 Android 的 ORM(ORMLite、greenDAO、Sugar ORM、ActiveAndroid 等)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-18
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多