2016-12-31 9 views
1

C'était une liste de tableau au début puis j'ai essayé de le changer en un ensemble afin que je puisse le placer à putStringSet. Mais oui .. Il n'a pas une chaîne de type de donnéesPlacer un type de données non String dans putStringSet SharedPreferences Android

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

Le RecordData est une classe que j'ai créé.

Je suce.

+1

en double - http: // stackoverflow .com/questions/7057845/save-arraylist-to-sharedpreferences –

+0

Vous avez raison de le convertir en un ensemble, mais vous le stockez dans le mauvais sens. Vérifiez le lien ci-dessus. –

+0

Vous pouvez également utiliser la bibliothèque Gson pour stocker et récupérer des objets personnalisés - cela est expliqué ici - http://stackoverflow.com/a/36184406/3225001 –

Répondre

0

vous pouvez utiliser la bibliothèque GSON .. essayer ce pour la sauvegarde et les données de préférences partagées de chargement:

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

placer également dans votre fichier Gradle:

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