write usar shared_prefs getint getall como android save sharedpreferences

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);