// shared preferences
private SharedPreferences preferences;
private SharedPreferences.Editor nsuserdefaults;
// setup persistent data
preferences = this.getSharedPreferences("MyPreferences", MainActivity.MODE_PRIVATE);
nsuserdefaults = preferences.edit();
arrayOfMemberUrlsUserIsFollowing = new ArrayList<String>();
//Retrieve followers from sharedPreferences
Set<String> set = preferences.getStringSet("following", null);
if (set == null) {
// lazy instantiate array
arrayOfMemberUrlsUserIsFollowing = new ArrayList<String>();
} else {
// there is data from previous run
arrayOfMemberUrlsUserIsFollowing = new ArrayList<>(set);
}
// convert arraylist to set, and save arrayOfMemberUrlsUserIsFollowing to nsuserdefaults
Set<String> set = new HashSet<String>();
set.addAll(arrayOfMemberUrlsUserIsFollowing);
nsuserdefaults.putStringSet("following", set);
nsuserdefaults.commit();
30条答案
按热度按时间thtygnil1#
qojgxg4l2#
我使用了相同的方式保存和检索字符串,但是在这里,我使用了hashset作为中介
要将arraylist保存到SharedReferences,我们使用hashset:
1-我们创建sharedpreferences变量(在数组发生更改的地方)
2-我们将arraylist转换为hashset
3-然后我们放置stringset并应用
4-在hashset中获取stringset并重新创建arraylist来设置hashset。
djmepvbi3#
保存列表到的我的utils类
SharedPreferences
```public class SharedPrefApi {
private SharedPreferences sharedPreferences;
private Gson gson;
}
// for save
sharedPrefApi.putList(SharedPrefApi.Key.USER_LIST, userList);
// for retrieve
List userList = sharedPrefApi.getList(SharedPrefApi.Key.USER_LIST, User.class);
2o7dmzc54#
这应该起作用:
他们,为了抓住它:
这对我很有用。
oknwwptz5#
您可以从facebooksdk的SharedReferencesTokenCache类中引用serializekey()和deserializekey()函数。它将supportedtype转换为json对象,并将json字符串存储到SharedReference中。你可以从这里下载sdk
z18hc3ub6#
使用此自定义类:
使用方法:
hgncfbus7#
在SharedReferences中使用getstringset和putstringset非常简单,但是在我的例子中,我必须复制set对象,然后才能向集合中添加任何内容。否则,如果我的应用程序被强制关闭,该集将不会被保存。可能是因为下面api中的注解(不过,如果应用程序被“后退”按钮关闭,它会被保存。
请注意,您不能修改此调用返回的set示例。如果您这样做,存储数据的一致性就得不到保证,修改示例的能力也得不到保证。http://developer.android.com/reference/android/content/sharedpreferences.html#getstringset
ulydmbyx8#
你可以把它转换成
Map
对象来存储它,然后在检索SharedPreferences
.pu82cl6c9#
此方法用于存储/保存数组list:-
此方法用于检索数组list:-
8fsztsew10#
您可以使用序列化或gson库将列表转换为字符串,反之亦然,然后将字符串保存在首选项中。
使用谷歌的gson库:
使用java序列化:
3htmauhk11#
别忘了实现serializable:
https://stackoverflow.com/a/7635154/4639974
vd2z7a6w12#
ecfsfe2w13#
下面的代码是公认的答案,还有几行是给新人(me)的,例如,演示如何将set类型对象转换回arraylist,以及关于“.putstringset”和“.getstringset”前面的内容的附加指导(谢谢你(一)
nwnhqdif14#
我所能找到的最好的方法是创建一个二维键数组,并将该数组的自定义项放入二维键数组中,然后在启动时通过二维数组检索它。我不喜欢使用字符串集的想法,因为大多数android用户仍然使用姜饼,使用字符串集需要Hive。
示例代码:这里ditor是共享的pref编辑器,rowitem是我的自定义对象。
92dk7w1h15#
为什么不把arraylist放在一个应用程序类上呢?它只有在应用程序真的被杀死时才会被销毁,所以,只要应用程序可用,它就会一直存在。