如何在共享首选项中保存日历数据:Android
我有一个如何在共享首选项中保存日历数据:Android,android,arraylist,sharedpreferences,Android,Arraylist,Sharedpreferences,我有一个Calendar类型的ArrayList,我需要将其数据保存到SharedReferences中。 我可以使用以下代码保存StringArrayList数据: Set<String> setName = new HashSet<String>(); setName.addAll(ignoredProcesses); SharedPreferences shrdPref = getSharedPreferences("sharePref", MODE_PRIVATE
Calendar
类型的ArrayList
,我需要将其数据保存到SharedReferences
中。
我可以使用以下代码保存String
ArrayList
数据:
Set<String> setName = new HashSet<String>();
setName.addAll(ignoredProcesses);
SharedPreferences shrdPref = getSharedPreferences("sharePref", MODE_PRIVATE);
SharedPreferences.Editor prefEditor = shardPref.edit();
prefEditor.putStringSet("keyValue", setName);
prefEditor.commit();
Set setName=new HashSet();
setName.addAll(ignoredprocess);
SharedPreferences shrdPref=getSharedPreferences(“sharePref”,模式为私有);
SharedPreferences.Editor prefEditor=shardPref.edit();
putStringSet(“keyValue”,setName);
提交();
但是如果我使用相同的方法来保存日历
数据,那么将设置
类型更改为字符串
会出错
如何保存ArrayList list=new ArrayList()编码>进入SharedReferences
以及如何从SharedReferences
取回它。
非常感谢你的帮助。谢谢您必须使用方法calendar.getTimeInMillis()将每个日历转换为long,然后使用方法putLong(key,long)将其保存在您的首选项中。您必须更改每个条目的密钥。以下是一个例子:
SharedPreferences shrdPref = getSharedPreferences("sharePref",MODE_PRIVATE);
SharedPreferences.Editor prefEditor = shardPref.edit();
for(int i = 0; i<list.size();i++){
long millis = list.get(i).getTimeInMillis();
prefEditor.putLong("calendar"+i,millis);
prefEditor.commit();
}
有点麻烦,不确定是否有效,请尝试一下并让我知道。Calendar cal=new Calendar();不工作,所以我使用Calendar cal=Calendar.getInstance();我在我的平板电脑上写了代码,所以我没有任何IDE来检查代码。希望您喜欢。我建议您使用新的GregorianCalendar()而不是使用Calendar.getInstance();
int i =0;
while(shrdPref.getLong("calendar"+i,0)!=0){
Calendar cal = new GregorianCalendar();
cal.setTimeInMillis(shrdPref.getLong("calendar"+i,0));
list.add(cal);
i++;
}