我可以使用Android中的SharedPreferences存储两个或多个具有相同键的值吗?如果没有,请告诉我如何在许多用户在注册应用中注册时如何存储用户名,名字,密码等值?
前:
person A registered with username="john12", first name="john" and DOB="06/06/2000".
person B registered with username="arun89", first name="arun" and DOB="08/11/1989".
现在,我想将这些值存储在SharedPreferences中并稍后检索它们。是否可以使用SharedPreferences?如果没有,请告诉我如何以其他方式做。
提前谢谢。
答案 0 :(得分:3)
我会考虑创建JSONObject
并添加您要存储的字段作为键:值对。
json.putString(key, value);
然后,您可以使用json.toString()
将json对象存储在其字符串表示中,稍后使用
JSONObject jo = new JSONObject(jsonString);
String value = jo.getString(key);
JSONObject在字符串旁边也提供不同的数据类型。
这实际上取决于您要存储的数据量。根据我的选择,我会选择SharedPreferences或SQLite实现。
答案 1 :(得分:2)
对于你的情况,最好使用SQLIte数据库。但是如果你想使用共享首选项,它仍然是可能的。你必须使用带有附加索引的键来记住不同的用户,如
USERNAME1:阿伦
而UserName2:约翰
您必须记住用户的总数。然后可以维护所有用户。您还可以使用其他数据结构(如hashmap)来维护共享首选项的数据。
答案 2 :(得分:2)
您无法直接存储这些值(后者将覆盖之前添加的值),但您始终可以存储Parcelable并将数据放入其中
答案 3 :(得分:1)
我不认为这是可能的,因为你不知道用户的数量。 您可以尝试用逗号分隔用户,但这很蹩脚。
您应该考虑使用SQLite数据库。 http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
答案 4 :(得分:0)
然后你必须存储一个数组用户对象列表首先创建一个类userInfo然后创建一个数组列表类型userInfo然后将数据存储在这个列表中并在SharedPreferences中放入一个可序列化的对象。
答案 5 :(得分:0)
您还可以将它们存储在名为“registers”的单个键上作为字符串。将每个寄存器连接到首选项。把“;” (或任何其他你想要的字符)在每个寄存器之间。然后解析字符串并使用值。
键:寄存器
值:“username = john12,first name = john,DOB = 06/06/2008; username = mike12,first name = mike,DOB = 06/07/20”
使用String的split方法将为您提供一个寄存器列表。
registers.split(";");
再次用“,”拆分将给出每个寄存器的属性。