在putStringSet SharedPreferences Android中放置一个非String数据类型

时间:2016-12-31 09:04:25

标签: android android-sharedpreferences

首先是一个数组列表然后我尝试将其更改为一个集合,因此我可以将它放在putStringSet中。但是是..它没有字符串数据类型

    Set<RecordData> set = new HashSet<>(dataList);
      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
        SharedPreferences.Editor editor = preferences.edit();
        editor.putStringSet("recordlists", set);

RecordData是我创建的一个类。

我很糟糕。

1 个答案:

答案 0 :(得分:0)

你可以使用GSON库.. 试试这个用于保存和加载共享首选项数据:

public static void saveSharedPreferencesLogList( Set<RecordData> record) {
            SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
            SharedPreferences.Editor prefsEditor = preferences.edit();
            Gson gson = new Gson();
            String json = gson.toJson(record);
            prefsEditor.putString("myJson", json);
            prefsEditor.commit();
        }


        public static Set<RecordData> loadSharedPreferencesLogList() {
            Set<RecordData> record = new HashSet<>(dataList);

            SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
            Gson gson = new Gson();
            String json = preferences.getString("myJson", "");
            if (json.isEmpty()) {
                record = new Set<RecordData>();
            } else {
                Type type = new TypeToken<Set<RecordData>>() {
                }.getType();
                record = gson.fromJson(json, type);
            }
            return record;
       }

同样将其放在您的Gradle文件中:

compile 'com.google.code.gson:gson:2.6.2'