2014-07-17 2 views
0

-je mettre la chaîne en SharedPreferences comme celui-ciComment récupérer des chaînes de SharedPreferences dans le même ordre tel qu'il est stocké

SharedPreferences preferences = getActivity().getSharedPreferences("Music_playlist", Context.MODE_PRIVATE); 

         SharedPreferences.Editor editor = preferences.edit(); 
         editor.putString(Song_name, Song_name); 
         editor.commit(); 

et lorsque je tente de récupérer des chaînes de SharedPreferences il ne conserve pas le même ordre que il est stocké dans sharedPreferences

SharedPreferences prefs = getActivity().getSharedPreferences("Music_playlist", Context.MODE_PRIVATE); 
    Map<String,?> keys = prefs.getAll(); 

    if(keys!=null) { 

     for (Map.Entry<String, ?> entry : keys.entrySet()) { 
      Log.d("data ADDED",(String)entry.getValue()); 
      PLAYLIST.add((String)entry.getValue()); 
     } 
    } 

comment dois-je stocker des chaînes dans sharedPreferences et maintenir l'ordre tout en obtenant des Lices de lui

+1

Soit sérialiser une liste sous une seule clé de préférence, soit utiliser une base de données. Les SharePreferences ne sont pas un magasin de données ordonné. –

Répondre

1

SharedPreferences sont comme un HashMap et ne vous donnent aucun ordre des paires de valeurs-clés que vous y stockez. Pour stocker votre liste de lecture d'une manière ordonnée, vous devez utiliser une seule paire de valeurs de clé, et la valeur doit être une liste de noms de morceaux séparés par des virgules. Vous pouvez réellement utiliser n'importe quel caractère de séparation approprié (en prenant soin d'échapper les noms des morceaux) ou stocker un tableau codé JSON.

Voici un pseudo code, mais cela n'illustre pas les meilleures pratiques.

SharedPreferences preferences = getActivity().getSharedPreferences("Music_playlist", Context.MODE_PRIVATE); 
String playlist = preferences.getString("playlist"); 
playlist += "," + escapeCsv(songName); 

SharedPreferences.Editor editor = preferences.edit(); 
editor.putString("playlist", playlist); 
editor.commit(); 

Il peut être préférable de stocker la liste de lecture dans une base de données.

Questions connexes