Я работаю в андроиде. Я хочу сделать sharedpreference в моем коде, но я не знаю, как я могу сделать sharedpreference для массива и как использовать значение этой sharedpreference в другом классе.
Это мой массив в одном цикле: - urls [i] = sitesList.getWebsite(). get (i);
Я хочу сделать предпочтение для этого массива urls []. пожалуйста, предложите мне, как я могу написать код для объявления sharedpreference и как я могу получить значение этого sharedpreference?
Спасибо заранее.
Ответ 1
putStringSet
и getStringSet
доступны только в API 11.
В качестве альтернативы вы можете сериализовать свои массивы с помощью JSON так:
public static void setStringArrayPref(Context context, String key, ArrayList<String> values) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
JSONArray a = new JSONArray();
for (int i = 0; i < values.size(); i++) {
a.put(values.get(i));
}
if (!values.isEmpty()) {
editor.putString(key, a.toString());
} else {
editor.putString(key, null);
}
editor.commit();
}
public static ArrayList<String> getStringArrayPref(Context context, String key) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String json = prefs.getString(key, null);
ArrayList<String> urls = new ArrayList<String>();
if (json != null) {
try {
JSONArray a = new JSONArray(json);
for (int i = 0; i < a.length(); i++) {
String url = a.optString(i);
urls.add(url);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return urls;
}
Задайте и верните свои URL-адреса следующим образом:
// store preference
ArrayList<String> list = new ArrayList<String>(Arrays.asList(urls));
setStringArrayPref(this, "urls", list);
// retrieve preference
list = getStringArrayPref(this, "urls");
urls = (String[]) list.toArray();