Here is an example of how to save the List in SharedPreferences:
// Constante com o nome do objeto q vamos salvar
private static final String LISTA = "LISTA";
// Constante com o nome da propriedade
private static final String ITENS = "ITENS";
private static final String SEPARADOR = ";"; // este deve ter um coringa (caracter que não exista na lista!)
/**
* Transforma a lista em uma String e salva.
* @param selecoes
* @param context
*/
public static void saveList(final List<String> selecoes, final Context context)
{
final SharedPreferences prefs = context.getSharedPreferences(LISTA, Context.MODE_PRIVATE);
final StringBuffer buffer = new StringBuffer();
for(final String s : selecoes)
{
buffer.append(s);// adicionamos o item
buffer.append(SEPARADOR);// adicionamos um separador
}
final SharedPreferences.Editor editor = prefs.edit();
editor.putString(ITENS, buffer.toString());
editor.commit(); // commitamos os dados ...
}
public static List<String> loadList(final Context context)
{
final SharedPreferences prefs = context.getSharedPreferences(LISTA, Context.MODE_PRIVATE);
final String valor = prefs.getString(ITENS, null);
if(null == valor){ // não armazenamos nada ainda...
return null;
}
final String[] lista = valor.split(SEPARADOR); /// quebramos a string em cada separador encontrado
final List<String> retorno = new ArrayList<String>(0);
for(final String s : lista)
{
if(!"".equals(s))
{
retorno.add(s); // se não for vazia, adiciona na lista
}
}
return retorno;
}
A tip:
I suggest validating if a country is already listed before adding