如何在共享首选项中保存日历数据: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++;
}