2015-12-21 4 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 (например, String, содержащий JSON), но это зависит от вас.

Обычно основное внимание уделяется:

  • модели данных Сохранение и Marker не модели данных

  • Сохранение в лучшем контейнере, чем SharedPreferences, такие как SQLite базы данных или даже обычный файл в формате JSON

2

Вы можете сохранить только основные типы данных (например, Int, длинные, с плавающей точкой, логическое) и строку с помощью SharedPreferences. Подробнее here.

Если вы хотите, вы можете преобразовать его в текстовое представление с помощью таких инструментов, как JsonParser, и преобразовать его обратно в исходный объект после извлечения. Найти учебник here.

Для сохранения объектов приложения карты рекомендуется использовать более удаленное хранилище данных, такое как SQLite.

Смежные вопросы