是否可以在SharedPreference中保存LatLng和List?从另一个活动我需要检索这个值。实现这一目标的最简单方法是什么?提前谢谢..
答案 0 :(得分:0)
这是我用于在共享首选项中存储复杂对象(String,Int等除外)的代码。它也适用于列表。您需要将gson添加到项目中(https://code.google.com/p/google-gson/)。
希望这有帮助!
public <T> void putComplex(String key, T value){
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
String data = gson.toJson(value);
Editor ed = getSettings(context).edit();
ed.putString(key, data);
ed.commit();
}
public <T> T getComplex(String key, Class<T> type){
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
String data = getSettings(context).getString(key, null);
if (data==null){
return null;
}
return gson.fromJson(data, type);
}
protected static SharedPreferences getSettings(Context context){
SharedPreferences settings = context.getSharedPreferences(AppConfig.APP_ID, Context.MODE_PRIVATE);
return settings;
}
public static Address getAddress(Context context){
return getComplex(SP_ADDRESS, Address.class);
}
public static void setAddress(Context context, Address address){
putComplex(SP_ADDRESS, address);
}