My app has a list of String values (of some 5-20 characters each), that I have to store persistently. The SharedPreferences seem to me the most appropriate, as it's a short list. Usually it will be empty, or contain just a few values.
I've already seen this question which asks basically the same, the answer is unsuitable as the StringSet is API level 11, and I'm targeting Android 2.1 and up, which is API 7.
Considering the usually small list of strings, using a database seems total overkill to me. Using a file to store this would be another solution but not so elegant. I've considered creating keys (like "1", "2", "3", etc) but that's actually worse than using a file - especially when it comes to reading back my data.
Anyway if nothing else works I'll have to go for the file option. If my idea is simply not practical using the SharedPreferences for API lvl 7, I'd appreciate to hear that too.
I found the easiest solution to store and retrieve a list of items from SharedPreferences is to simply serialize / deserilaize the array into / from JSON and store it into a string setting.
Gson comes really handy doing it.
READ:
SharedPreferences prefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
String value = prefs.getString("list", null);
GsonBuilder gsonb = new GsonBuilder();
Gson gson = gsonb.create();
MyObject[] list = gson.fromJson(value, MyObject[].class);
WRITE:
String value = gson.toJson(list);
SharedPreferences prefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
Editor e = prefs.edit();
e.putString("list", value);
e.commit();