usar - Android SharedPreferences putStringSet order/sort
shared preferences write (3)
Esto no es posible. Los conjuntos son colecciones desordenadas.
Intento guardar / restaurar un conjunto de cadenas y todo funciona, excepto una cosa. Cuando creo mis cuerdas pongo:
Set<String> set = new HashSet<String>();
for(int i=0; i<toggles.size();i++){
set.add(toggles.get(i).serialise());
}
La orden es, por ejemplo, "blutooth" "application" "data". Cuando vuelva a establecer:
Set<String> set = prefs.getStringSet(key, new HashSet<String>());
for (String toggle : set){
Toggle t = new Toggle();
t.deserialize(toggle);
toggles.add(t);
}
Obtengo "datos" de "aplicación" "bluetooth", están ordenados por nombre y no quiero esto. Quiero obtener el mismo orden que tengo guardar. Alguien puede ayudarme ?
Puede guardar una lista de cadenas como una sola cadena con un delimitador. Por ejemplo, esta es tu matriz:
["Italy", "France", "Spain", "Japan", "United States"]
Puedes guardarlo como:
"Italy;France;Spain;Japan;United States"
En codigo:
SharedPreferences sharedPref = mContext.getSharedPreferences(PREF_KEY, Context.MODE_PRIVATE);
Editor editor = sharedPref.edit();
// countries is your List
String countriesString = TextUtils.join(";", countries);
editor.putString("countries", countriesString);
editor.apply();
Para recuperar sus datos:
final String countriesString = sharedPref.getString("countries", "");
List<String> countries = new ArrayList<>();
if (!countriesString.isEmpty()){
countries = new ArrayList<>(Arrays.asList(countriesString.split(";")));
}
Puede prefijar sus cadenas por números, por ejemplo, 01bluetooth
, 02data
, 02data
, en el orden en que desea eliminarlos. Coloque el Set<String>
devuelto desde getStringSet
en un Array<Set>
y ordénelo.
Set<String> set = prefs.getStringSet(key, new HashSet<String>());
Array<String> a = set.toArray();
java.util.Arrays.sort(a);