2013-12-16 2 views
0

Я использую google maps v2, и каждый раз я разбираю одну и ту же json из папки с ресурсами и использую для ее представления на карте. Я храню все значения json в ArrayList<Map<String, Object>> myarraylist ; Я бы хотел для сохранения того же в Android.
Я очень ценю любой способ сделать это. Я знаю только, чтобы хранить строки и boolean в sharedpreferences. Пожалуйста, помогите мне.
Спасибо заранее.save ArrayList <Карта <String, Object >> android

+0

Если у вас есть ресурс, сохраненный в активах вашего приложения, почему вы хотите десериализировать его, а затем сериализовать его снова? Разрешено ли пользователю вводить данные и вы хотите их сохранить? – Raffaele

+0

У меня это как json, но мне бы хотелось, чтобы ArrayList > arraylist. Так что данные уже разобраны и, следовательно, потребуется меньше времени для добавления полигонов на карту. – jason

+0

пытается реализовать в строках http://ashoksubha.blogspot.in/2012/05/android-array-list-stored-synchronized.html – jason

ответ

4

Вы можете использовать gson.jar для хранения объектов класса в SharedPreferences. Вы можете downlaod эту баночку здесь https://code.google.com/p/google-gson/downloads/list

SharedPreferences mPrefs = getPreferences(MODE_PRIVATE); 

Спасти

Editor prefsEditor = mPrefs.edit(); 
Gson gson = new Gson(); 
String json = gson.toJson("MyObject"); 
prefsEditor.putString("MyObject", json); 
prefsEditor.commit(); 

Чтобы извлечь

Gson gson = new Gson(); 
    String json = mPrefs.getString("MyObject", ""); 
    MyObject obj = gson.fromJson(json, MyObject.class); 

Чтобы сохранить список заданных пользователем объектов SharedPreferences. например

public static final String CONNECTIONS = "connections"; 
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); 

User entity = new User(); 
// ... set entity fields 

List<Connection> connections = entity.getConnections(); 
// convert java object to JSON format, 
// and returned as JSON formatted string 
String connectionsJSONString = new Gson().toJson(connections); 
editor.putString(CONNECTIONS, connectionsJSONString); 
editor.commit(); 

Чтобы получить список пользовательских объектов из SharedPreferences

String connectionsJSONString = getPreferences(MODE_PRIVATE).getString(CONNECTIONS, null); 
Type type = new TypeToken < List <Connection>>() {}.getType(); 
List <Connection> connections = new Gson().fromJson(connectionsJSONString, type) 
+0

Я никогда не использовал GSON, вы можете направить меня к учебнику по внедрению GSON в мой код. Спасибо, что Nitesh попытается реализовать то же самое – jason

+0

попробуйте это ... http: //www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/ –

+0

Awesome Спасибо Nitesh. – jason

1

У вас есть несколько вариантов. Проверьте http://developer.android.com/guide/topics/data/data-storage.html для получения подробных сведений обо всех них.

+0

Могу ли я сохранить его в текстовом файле? ArrayList > arraylist; – jason

+0

Я уверен, что вы могли бы это сделать, но на самом деле это не будет отличаться от их наличия в активах, как вы уже это сделали ... Или вы меняете данные? В этом случае я бы предложил использовать базу данных. Или, в зависимости от сложности данных, хранящихся в объектах, общих настроек (вы можете разместить там все примитивные данные: http://developer.android.com/reference/android/content/SharedPreferences.Editor.html). – jpm

+0

пытается реализовать в строках http://ashoksubha.blogspot.in/2012/05/android-array-list-stored-synchronized.html – jason

0

Я не думаю, что вы когда-нибудь придумать формат, который позволит повысить производительность с точки зрения пользователя - но вы можете попробовать путь Serializable - убедитесь, что все объекты на вашей карте являются Serializable - и сохраните двоичный блок в файле во внутренней памяти

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