Android 将jsonArray放入SharedReferences
我是编程新手,需要你的帮助。我在我的应用程序的一些活动中使用了共享的参考资料。我用它来保存用户名、密码等。现在我需要将任务(字符串)保存到it中。但问题是,我不明白如何在共享的首选项中保存一些任务。我现在只保存我放置的最后一个任务的代码Android 将jsonArray放入SharedReferences,android,arrays,sharedpreferences,Android,Arrays,Sharedpreferences,我是编程新手,需要你的帮助。我在我的应用程序的一些活动中使用了共享的参考资料。我用它来保存用户名、密码等。现在我需要将任务(字符串)保存到it中。但问题是,我不明白如何在共享的首选项中保存一些任务。我现在只保存我放置的最后一个任务的代码 public class MainPage extends AppCompatActivity { SharedPreferences prefs; EditText input; Button btnDel; @Overrid
public class MainPage extends AppCompatActivity {
SharedPreferences prefs;
EditText input;
Button btnDel;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
prefs = getSharedPreferences("myUsers",MODE_PRIVATE);
input = (EditText)findViewById(R.id.txtItem);
protected void SavePreferences1(String task) {
JSONObject ExistUser = getUserByName("katya");//one of the users saved into sharedPreferences.
try {
JSONArray jsonArray = new JSONArray();
ExistUser.put("tasks", task);
jsonArray.put(task);
prefs.edit().putString(ExistUser.getString("name"), ExistUser.toString()).commit();//save changed JSON
} catch (JSONException e) {
e.printStackTrace();
}
}
public void SavePreferences(View v){
SavePreferences1(input.getText().toString());
}
}
SharedReferences每个键只能存储一个值
SavePreferences1
只有一个数组,每次调用该数组时都会重新创建该数组,并且只有一个任务
无论如何,理想情况下,您不应该对数据列表使用SharedReference。最好使用sqlite数据库
虽然你可以做一些像
JSONArray任务
- 如果用户不存在,则获取一个空任务列表
。这可以由[]
方法的默认参数指定李>SharedReferences
- 如果用户确实存在,则您有一个列表
李>[1、2、3…]
任务添加新任务。放置(newTask)
更简单的方法-使用Gson为您的
用户
类提供JSON表示,您可以对Java对象进行序列化和反序列化。像普通一样使用ArrayList
试试这个:
protected void SavePreferences1(String task) {
JSONObject ExistUser = getUserByName("katya");//one of the users saved into sharedPreferences.
try {
JSONArray jsonArray = new JSONArray(prefs.getString(ExistUser.getString("name"), "[]"));
ExistUser.put("tasks", task);
jsonArray.put(task);
prefs.edit().putString(ExistUser.getString("name"), jsonArray.toString()).commit();//save changed JSON
} catch (JSONException e) {
e.printStackTrace();
}
}
谢谢但我还是喜欢使用SharedReferences。现在我在SheredPreferences中记录如下:{“name”:“nikita”,“pass”:“112233qW”,“email”:nikita@nikita.com“,“status”:true,“tasks”:“here”}我只需要找到一种方法,将更多的任务放在共享首选项中。他想说的是:你覆盖了你的任务,如果每次都使用相同的用户名存储任务。@KeitL则该数据中没有数组<代码>“任务”:此处“。。。这是一个问题。你能澄清一下在另一个答案中什么不起作用吗
getString
是JSONObject
和SharedReferences
类的一种方法。谢谢。但我把这个optString突出显示为红色。然后在putString按钮停止工作时更改。请使用getString尝试