2016-02-29 3 views
2

В приложении для Android У меня есть просмотр списка, где вы можете добавлять новые объекты, каждый «объект» имеет 4-5 строковых значений. Я не предсказываю, что кто-нибудь может использовать более 3 или 4 из этих объектов в приложении.Общие предпочтения для хранения данных ListView

На данный момент его сделано на базе базы данных SQLite, один объект = одна запись, с 4-5 значениями (тип TEXT), но ее становится все сложнее и сложнее в обслуживании, и я думаю, что его добавление в приложение круто.

Возможно ли это с помощью общих настроек? Или это не хорошая идея хранить такие данные? Как насчет ключей и ценностей, могу ли я их направить?

+1

Нет, общие настройки не могут использоваться для хранения больших объектов, что плохо для этого. [Сайт разработчика] (http://developer.android.com/guide/topics/data/data-storage.html#pref) –

ответ

1

Вам понадобится Gson, чтобы поместить объект в Общие настройки. Вы можете найти его here и как добавить его в свой проект, например this. Не забудьте добавить зависимость в файле gradle 'build.gradle' compile files ('libs/gson-2.2.4.jar').

Чтобы поместить объект в Shared Preferences использовать следующее:

SharedPreferences preferences = getSharedPreferences("name", MODE_PRIVATE); 
SharedPreferences.Editor editor = preferences.edit(); 
Gson gson = new Gson(); 
String serializedObj = gson.toJson(ObjectHere); 
editor.putString("key", serializedObj); 
editor.commit(); 

Чтобы получить данные позже сделать следующее

SharedPreferences preferences = getSharedPreferences("name", MODE_PRIVATE); 
    Gson gson = new Gson(); 
    String serializedObj = preferences.getString("key", "DEFAULT"); 
    ObjectType object = gson.fromJson(serializedObj, Object.class); 
0

Вы можете записать данные в виде файла и восстановить его при необходимости с помощью файла:

String FILENAME = "hello_file"; 
String string = "hello world!"; 

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
fos.write(string.getBytes()); 
fos.close(); 

Было бы лучше, если и выполнить эту задачу в фоновом потоке, например AsyncTask.

-1

вы можете добавлять, обновлять или удалять общие предпочтения в любое время, это будет проще, если вы используете sharedpreference.

/******* Создать SharedPreferences *******/

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
Editor editor = pref.edit(); 

/**************** хранения данных, пара ключ/значение *******************/

editor.putBoolean("key_name1", true);   // Saving boolean - true/false 
editor.putInt("key_name2", "int value");  // Saving integer 
editor.putFloat("key_name3", "float value"); // Saving float 
editor.putLong("key_name4", "long value");  // Saving long 
editor.putString("key_name5", "string value"); // Saving string 

// Save the changes in SharedPreferences 
editor.commit(); // commit changes 

/**************** Получить SharedPreferences данные *******************/

// Если значение для ключа не существует, то возвратите второе значение параметра - В этом случае null

pref.getBoolean("key_name1", null);   // getting boolean 
pref.getInt("key_name2", null);    // getting Integer 
pref.getFloat("key_name3", null);   // getting Float 
pref.getLong("key_name4", null);   // getting Long 
pref.getString("key_name5", null);   // getting String 

/************ Удаление значения ключа из SharedPreferences *****************/

editor.remove("key_name3"); // will delete key key_name3 
editor.remove("key_name4"); // will delete key key_name4 

// Save the changes in SharedPreferences 
editor.commit(); // commit changes 

/************ Очистить все данные из SharedPreferences *****************/

editor.clear(); 
editor.commit(); // commit changes 
0

Это может быть решена с помощью gson (https://github.com/google/gson). Просто добавьте compile files ('libs/gson-2.2.4.jar') в раздел «Зависимости градиента».

Предположим, вы используете Arraylist от class YOUR_CLASS для просмотра.т.е.

private ArrayList<YOUR_CLASS> arraylist = new ArrayList<YOUR_CLASS>(); 

Теперь после добавления объектов детали к вашему arraylist вы можете сохранить его в общей предпочтительности использования:

SharedPreferences preferences = getSharedPreferences(MODE_PRIVATE); 
SharedPreferences.Editor editor = preferences.edit(); 

Gson gson = new Gson(); 
String arraylist_in_string = gson.toJson(arraylist).toString(); //Converting it to String 
editor.putString("YOUR_KEY", arraylist_in_string); //now saving the String 
editor.commit(); 

Теперь, когда вы должны использовать arraylist вы можете взять его с sharedPreferences использования

 Gson gson = new Gson(); 
     String arraylist_in_string = preferences.getString("YOUR_KEY", null); 
    if(arraylist_in_string != null) //if we have list saved 
    { 
//creating a list of YOUR_CLASS from the string response 
     Type type = new TypeToken<ArrayList<YOUR_CLASS>>() {}.getType(); 
     List<YOUR_CLASS> list = new Gson().fromJson(arraylist_in_string, type); 
//now adding the list to your arraylist 
    if (list != null && list.size() > 0)) { 
    arraylist.clear();// before clearing check if its not null. 
        arraylist.addAll(list); 
    }else //ie list isn't saved yet 
    { 
    //You may want to save the arraylist into Shared preference using previous method 
    } 
Смежные вопросы