我是 Android 开发的新手,如果能得到任何帮助,我将不胜感激。
我正在设计一个应用程序,在某些时候需要询问用户他 friend 的名字,以便以后使用这些名字,即这些名字将在下拉列表中使用,并将显示在一个单独的查看。
我的问题是:有效存储这些名称然后能够访问它们以进行读取、编辑和删除的最佳方法是什么?名字的数量不会很大(最多20条)。
回应关于添加更多信息的评论:
我需要用户指定将在 2 个不同的 Android Activity 中使用的名称(字符串)列表: 1) 此姓名列表将在作为申请表一部分的 Spinner 中使用 2) 此名称列表将用于单独的 Activity,该 Activity 旨在处理(编辑和删除)现有项目并添加新项目。
我还需要在对这个列表进行操作(编辑、删除和创建新项目)后,两个 Activity 都会发生变化。该列表应该在用户退出应用程序后可用,因此据我所知,它应该存储在内部存储中的某个位置。
最佳答案
我讨厌人们通过发布文档链接来回答问题,所以我不会那样做。
我将发布文档链接并提供答案:
文档:http://developer.android.com/guide/topics/data/data-storage.html (这实际上是一本好书,不会太长,而且很高兴知道您的选择是什么)。
在我看来你需要保存一个 ArrayList 或其他东西,你说 20 个名字是最大数量,所以我会说你有 3 个可行的选项,我在这里展示,按简单的升序排列使用我作为比较者的拙见:
1- 内部存储
2- 共享首选项
3- 非常有趣的方法,我刚刚在研究一个可以帮助您的选项时发现,当我需要保存一小部分数据时,我肯定会使用它...
/p>
所以我建议的步骤是:将名称放入您最喜欢的集合对象(ArrayList、HashSet 等),然后分别引用上面引用的方法的这些示例:
1- https://stackoverflow.com/a/22234324/367342 (是的,这是一个指向该线程上给出的答案的链接,我投了赞成票,现在我觉得作弊好多了)。
2- Save ArrayList to SharedPreferences
3- https://stackoverflow.com/a/5703738/367342 <- 这个
- 将您的数据转换为 JSONObject
- 将其转换为字符串
- 使用共享首选项保存此字符串
- 稍后将其作为 jsonobject 读取
示例 3(未经测试,抱歉):
//Convert the ArrayList to json:
JSONObject json = new JSONObject();
json.put("uniqueArrays", new JSONArray(items));
//Make it into a string
String myLittleJason = json.toString();
//save it to the shared preferences
PreferenceManager.getDefaultSharedPreferences(context).edit().putString("KEY_TO_THE_NAMES_OF_MY_DEAR_FRIENDS", myLittleJason).commit();
//Loading it back from the preferences
String loadedJsonString = PreferenceManager.getDefaultSharedPreferences(context).getString("KEY_TO_THE_NAMES_OF_MY_DEAR_FRIENDS", "I have no friends, this is the default string returned if the key was not found, so, jokes aside, better make this a empty JSON string");
//making it into a JSON again
JSONObject loadedJson = new JSONObject(loadedJsonString);
//Converting the Json back into a ArrayList
ArrayList items = loadedJson.optJSONArray("uniqueArrays");
我喜欢这种 JSON 方法,如果您也喜欢它,请为原始方法投赞成票(也是;))https://stackoverflow.com/a/5703738/367342
关于android - 为以后的工作存储用户输入数据的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22234199/