2015-12-21 99 views
-1

我需要将地图应用程序实体对象保存到ArrayList<Marker>SharedPreferences中。我怎么做? 由于现在我成功地将LatLng值保存在double中,但现在我发现我需要保存整个对象。 这是我OnPause()至今:如何将对象保存到SharedPreferences中?

@Override 
protected void onPause() { 
    sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    key = 0; 
    for (LatLng latlng : markerList) { 
     double lat = latlng.latitude; 
     double lng = latlng.longitude; 
     editor.putString("key" + key, lat + "," + lng); 
     key++; 
    } 
    editor.putInt("id", key); 
    editor.apply(); 

    super.onPause(); 
} 
+2

您可以尝试保存它的json表示形式,并在需要时重新创建它。 –

回答

2

我该怎么做呢?

你不知道。 SharedPreferences不保留任意对象。欢迎您将ArrayList<Marker>转换为SharedPreferences可容纳的东西(例如,包含JSON的String),但这取决于您。

通常,重点是:

  • 保存模型数据,和一个Marker没有在一个更好的容器模型数据

  • 保存比SharedPreferences,如SQLite数据库或甚至纯JSON文件

2

您可以使用SharedPreferences仅保存基本数据类型(如int,long,float,boolean)和String。阅读更多here

如果需要,可以使用JsonParser等工具将其转换为文本表示,并在检索后将其转换回原始对象。查找教程here

对于保存地图应用程序实体,建议使用更好的数据存储,如SQLite。

相关问题