У меня есть ArrayList строк, из которых я рисую ListView. В приложении пользователь может добавлять элементы в ArrayList, вызывая отображение элемента в ListView. Пока приложение запущено, ArrayList сохраняет свои элементы, но после перезагрузки (или в любое другое время, когда приложение останавливается) элементы теряются. Я читал о внутреннем, внешнем и SQLite-хранилище, но я не мог заставить работать внутреннее и внешнее хранилище, и я ничего не знаю о SQLite, и приложение должно появиться в пятницу. Есть ли лучшая реализация экономии? Я приложил полную копию кода без каких-либо методов хранения для просмотра.
Спасибо.
вы можете перейти к идее Serializable, ссылаясь на следующие ссылки, которые вы можете получить.
http://developer.android.com/reference/java/io/Serializable.html
и
http://www.jondev.net/articles/Android_Serialization_Example_%28Java%29
Используйте реализацию настроек для сохранения ArrayList<String>
. В методе onPause
используйте это:
ArrayList<String> tobesaved = getData(); // fetch the data
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences.Editor edit = prefs.edit();
edit.putStringSet("SAVEDATA", new HashSet<String>(tobesaved));
edit.commit();
а затем вы можете получить его в методе onResume
:
ArrayList<String> retrieved = new ArrayList<String>(PreferenceManager.getDefaultSharedPreferences(getBaseContext()).getStringSet("SAVEDATA", new HashSet<String>()));
EDIT: у меня не было возможности посмотреть на ваш код: mediafire попытался открыть всплывающее окно в моем браузере, чтобы я быстро закрыл вкладку, но это должно сработать для вас. Попробуйте и, возможно, используйте gist (at http://gist.github.com) или pastebin (at http://pastebin.com/) вместо этого, чтобы делиться более длинными кодовыми последовательностями.
ArrayList<String> tobesaved = getData(); // fetch the data
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences.Editor edit = prefs.edit();
edit.putStringSet("SAVEDATA", new HashSet<String>(tobesaved));
edit.commit();
ArrayList<String> retrieved = new ArrayList<String>(PreferenceManager.getDefaultSharedPreferences(getBaseContext()).getStringSet("SAVEDATA", new HashSet<String>()));
Этот код работает, но мой Arraylist отсортирован по алфавиту. Этот hashSet испортил алфавитные организации моих строк., Любой может ответить на этот вопрос, отличный для PERFECT? Заставляя ArrayList сохранять и загружать с тем же порядком?
collections.sort
на найденном массиве