我正在制作一个Android应用程序,并希望为该应用程序中的某些对象创建“收藏夹”列表。我想让我在所有活动中都可以访问和编辑列表,但我真的想不出最好的方法。
共享的首选项?向设备写入一个小的txt文件?最快的方法是什么?
谢谢!
答案 0 :(得分:1)
您有很多选择来存储数据 Android提供了许多在本地存储数据的方法
共享首选项
内部存储
外部存储
SQLite数据库
您还可以使用firebase / database / Firestore()
但是SharedPreeference最常用于小型数据,以下是使用SharedPreeferences的一些详细信息
创建共享首选项
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
Editor editor = pref.edit();
在“首选项”中保存值:
// MY_PREFS_NAME - a static String variable like:
//public static final String MY_PREFS_NAME = "MyPrefsFile";
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putString("name", "Elena");
editor.putInt("idName", 12);
editor.apply();
从偏好设置中检索数据:
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String restoredText = prefs.getString("text", null);
if (restoredText != null) {
String name = prefs.getString("name", "No name defined");//"No name defined" is the default value.
int idName = prefs.getInt("idName", 0); //0 is the default value.
}
从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
对于大型数据组织,您可以使用SQLite数据库或Firebase。
答案 1 :(得分:0)
dependencies {
compile 'com.google.code.gson:gson:2.3.1'
}
然后,当您要保存时,将数组转换为String:
ArrayList<Type> yourData = new ArrayList<Type>();
String dataStr = new Gson().toJson(yourData);
//put this dataStr in your shared preferences as String
To retrieve and convert back to an object is also simple:
String str = "";
//you need to retrieve this string from shared preferences.
Type type = new TypeToken<ArrayList<Type>>() { }.getType();
ArrayList<Type> restoreData = new Gson().fromJson(str, type);
答案 2 :(得分:0)
如果要创建收藏夹列表,请使用SQLite数据库。
实际上只有四种存储数据的方式。
共享首选项
数据库
本地文件
远程服务器-最慢,因为它取决于网络连接,所以我们跳过它。
在其余3个之间,SharedPreferences在用于存储单个值时是一个不错的选择。但是,这不是存储“收藏夹”列表的好选择,主要是因为您只能存储单个String。
您仍然可以通过将列表中的所有项目组合为一个字符串,然后每次将其拆分来存储它。但是,随着“收藏夹”列表变大,该单个长字符串也将变大。一直拆分和合并效率不高。
如果仅需要存储“收藏夹”列表,SharedPreferences仍然是一个不错的选择,但是由于您也希望对其进行编辑,因此它成为一种不太吸引人的解决方案。
本地文件和数据库是更好的选择,但是本地文件要求您每次使用文件时都读入该文件。这种读取和写入文件的过程没有使用数据库有效,尤其是在您要编辑的情况下。例如,假设您要从“收藏夹”列表的中间删除一个项目。这将要求您读入文件,对其进行编辑,然后将更改再次写入文件。与最终解决方案的简便性相比,不太令人满意。
数据库是实现此目的的最佳选择,主要是因为它旨在管理数据。您可以创建一个收藏夹表并将每个项目添加为自己的单独行。提取整个表变得快速而简单。提取单个项目变得快速简便。添加新项目或删除新项目也很容易。