Si está utilizando una API (al igual que el nivel 8) en el que no puede uso put/getStringSet(), entonces esta es una posible solución, pero esto es muy caro y no es flexible si desea almacenar más grande liza. Me refiero a crear un mapa como la estructura de datos para una estructura similar a una matriz simple que crea una gran sobrecarga, si la preformance es importante.
para guardarlo:
public static void writeList(Context context, List<String> list, String prefix)
{
SharedPreferences prefs = context.getSharedPreferences("YourApp", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
int size = prefs.getInt(prefix+"_size", 0);
// clear the previous data if exists
for(int i=0; i<size; i++)
editor.remove(prefix+"_"+i);
// write the current list
for(int i=0; i<list.size(); i++)
editor.putString(prefix+"_"+i, list.get(i));
editor.putInt(prefix+"_size", list.size());
editor.commit();
}
para recuperarlo:
public static List<String> readList (Context context, String prefix)
{
SharedPreferences prefs = context.getSharedPreferences("YourApp", Context.MODE_PRIVATE);
int size = prefs.getInt(prefix+"_size", 0);
List<String> data = new ArrayList<String>(size);
for(int i=0; i<size; i++)
data.add(prefs.getString(prefix+"_"+i, null));
return data;
}
Y que realmente se utilicen:
List<String> animals = new ArrayList<String>();
animals.add("cat");
animals.add("bear");
animals.add("dog");
writeList(someContext, animals, "animal");
Y para recuperarlo:
List<String> animals = readList (someContext, "animal");
Si no está limitado a usar SharedPreferences, considere usar SQLiteDatabase!
Gracias, esto es lo que terminé usando, estoy seguro de que otras respuestas también funcionarían – Peter
Bueno, sería más fácil en lugar de complicar las cosas con las preferencias compartidas en su caso. ¡Buena suerte! – Ali
Aunque esto funcionará, las preferencias compartidas tienen una propiedad peculiar de persistir hasta la desinstalación de la aplicación, pero, por otro lado, si estamos usando el almacenamiento de la tarjeta SD, tendremos que eliminar explícitamente los archivos. –