San*_*shi 4 android arraylist sharedpreferences
我有一个ArrayList的Calendar类型,我需要将数据保存到SharedPreferences.我可以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();
Run Code Online (Sandbox Code Playgroud)
但是,如果我按照相同的方法保存Calendar数据,我将错误更改为Set类型String.
我怎么能保存ArrayList <Calendar> list = new ArrayList<Calendar>();到SharedPreferences我,以及如何得到它回来SharedPrefernces.非常感谢您的帮助.谢谢
您必须使用方法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();
}
Run Code Online (Sandbox Code Playgroud)
然后你会用以下方法检索它们:
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++;
}
Run Code Online (Sandbox Code Playgroud)
有点黑客,不确定它是否有效,请尝试并让我知道.
| 归档时间: |
|
| 查看次数: |
3108 次 |
| 最近记录: |