public static void setSharedPreferenceStringList(Context pContext, String pKey, List<String> pData) {
SharedPreferences.Editor editor = pContext.getSharedPreferences(Constants.APP_PREFS, Activity.MODE_PRIVATE).edit();
editor.putInt(pKey + "size", pData.size());
editor.commit();
for (int i = 0; i < pData.size(); i++) {
SharedPreferences.Editor editor1 = pContext.getSharedPreferences(Constants.APP_PREFS, Activity.MODE_PRIVATE).edit();
editor1.putString(pKey + i, (pData.get(i)));
editor1.commit();
}
} 以及从共享首选项获取字符串列表>>
public static List<String> getSharedPreferenceStringList(Context pContext, String pKey) {
int size = pContext.getSharedPreferences(Constants.APP_PREFS, Activity.MODE_PRIVATE).getInt(pKey + "size", 0);
List<String> list = new ArrayList<>();
for (int i = 0; i < size; i++) {
list.add(pContext.getSharedPreferences(Constants.APP_PREFS, Activity.MODE_PRIVATE).getString(pKey + i, ""));
}
return list;
}
//Retrieve the values
Set<String> set = myScores.getStringSet("key", null);
//Set the values
Set<String> set = new HashSet<String>();
set.addAll(listOfExistingScores);
scoreEditor.putStringSet("key", set);
scoreEditor.commit();
30条答案
按热度按时间z9zf31ra16#
您可以使用gson库保存字符串和自定义数组列表。
=>首先需要创建函数将数组列表保存到SharedReferences。
=>您需要创建函数从SharedReferences获取数组列表。
=>如何调用保存和检索数组列表函数。
=>别忘了在应用程序级别build.gradle中添加gson库。
实现com.google.code。gson:gson:2.8.2'
fzwojiic17#
我已经阅读了以上所有的答案。这都是正确的,但我发现了一个更简单的解决办法如下:
正在共享首选项中保存字符串列表>>
}
以及从共享首选项获取字符串列表>>
在这里
Constants.APP_PREFS
要打开的文件的名称;不能包含路径分隔符。f2uvfpb918#
最好的方法是使用gson转换为json字符串并将该字符串保存到sharedpreference。我也用这种方法来缓存响应。
z31licg019#
对于string、int、boolean,最好的选择是sharedpreferences。
如果要存储arraylist或任何复杂数据。最好的选择是纸质图书馆。
添加依赖项
初始化纸张
应在application.oncreate()中初始化一次:
节约
正在加载数据
如果存储中不存在对象,请使用默认值。
干得好。
https://github.com/pilgr/paper
inb24sb220#
还有kotlin:
txu3uszq21#
您还可以将arraylist转换为字符串并将其保存在首选项中
将arraylist转换为字符串后,可以使用
convertToString
方法检索字符串并使用将其转换为数组convertToArray
api 11之后,您可以直接将存储集保存到SharedReferences!!!:)fdbelqdn22#
这是你的完美解决方案。。试试看,
pb3skfrl23#
android sharedpreferans允许您将基本类型(boolean、float、int、long、string和stringset)作为xml文件保存在内存中。
任何解决方案的关键思想都是将数据转换为这些基本类型之一。
我个人喜欢将mylist转换成json格式,然后将其保存为sharedpreferences值中的字符串。
为了使用我的解决方案,你必须添加googlegson库。
在gradle中,只需添加以下依赖项(请使用google的最新版本):
保存数据(其中httpparam是您的对象):
检索数据(其中httpparam是您的对象):
1szpjjfi24#
嘿,朋友们,我没有使用
Gson
图书馆。这里我发布源代码。1.变量声明,即
2.变量初始化,即
3.将值存储到SharedReference,使用
packagesharedPreferences()
:4.SharedReference的检索值使用
retriveSharedValue()
:我希望它能对你有所帮助。。。
xhv8bpkk25#
java 语:
Kotlin
xmq68pz926#
正如@nirav所说,最好的解决方案是使用gson实用类将其作为json文本存储在sharedpreferences中。以下示例代码:
qaxu7uf227#
api 11之后
SharedPreferences Editor
接受Sets
. 你可以把你的列表转换成HashSet
或者类似的东西然后像那样储存。当你读回来的时候,把它转换成ArrayList
,如果需要的话分类,你就可以走了。您还可以序列化
ArrayList
然后保存/读取到/从SharedPreferences
. 解决方案如下:编辑:
好的,下面是要保存的解决方案
ArrayList
作为序列化对象SharedPreferences
然后从共享的参考资料中读取。因为api只支持在SharedReferences之间存储和检索字符串(在api 11之后,就更简单了),所以我们必须序列化和反序列化arraylist对象,该对象包含一个字符串中的任务列表。
在
addTask()
方法,我们必须获取共享首选项的示例,然后使用putString()
方法:类似地,我们必须从
onCreate()
方法:你可以得到
ObjectSerializer
来自apache pig项目objectserializer.java的类e5nqia2728#
你可以把它转换成
JSON String
并将字符串存储在SharedPreferences
.0sgqnhkj29#
正在保存
Array
在SharedPreferences
:加载
Array
数据来源SharedPreferences
```public static void loadArray(Context mContext)
{
SharedPreferences mSharedPreference1 = PreferenceManager.getDefaultSharedPreferences(mContext);
sKey.clear();
int size = mSharedPreference1.getInt("Status_size", 0);
}
mrphzbgm30#
使用这个对象-->tinydb--android共享首选项非常简单。
使
得到
更新
这里可以找到一些有用的例子和故障排除:android共享首选项tinydb putlistobject frunction