我创建了一个应用程序,当用户添加新数据时,会有新的标签我已经尝试过了,但我想知道如何制作存储在SharedPreferences中的json不要过度书写这样我就可以向适配器添加2个或多个用户json
这是我的put字符串文件json变量包含添加的用户
SharedPreferences sharedPreferences = getSharedPreferences("newUser", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("listNewUser",json)
editor.apply();
以下是我如何从共享偏好中获取json
try{
String listNewUserAdd = sh.getString("listNewUser","");
JSONObject object = new JSONObject(listNewUserAdd);
for (int i=0; i<object.length(); i++) {
CustomerNew customer = new CustomerNew();
customer.setCustomerName(object.getString("receiverName"));
customer.setAccountId(object.getString("customerReference"));
customer.setId(object.getLong("customerId"));
System.out.println("### GET CUSTOMER NAME "+customer.getCustomerName());
listSortNew.add(customer);
if (listSortNew == null) {
// if the array list is empty
// creating a new array list.
listSortNew = new ArrayList<>();
}
}
我认为有两种方法可以实现它。一种方法是当你放入数据时,你必须检查它是否存在。
SharedPreferences sharedPreferences = getSharedPreferences("newUser", MODE_PRIVATE);
String listNewUser = sharedPreferences.getString("listNewUser","");
if(!TextUtils.isEmpty(listNewUser)){
//covert it the list object
//then add the all new item to it
//finally convert it to json string
}
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("listNewUser",json)
editor.apply();
另一种方法是更改SharedPreferences
MODE_APPEND
但你必须知道,这并不意味着你为每个键添加多个值。这意味着,如果文件已经存在,它将被附加到而不是擦除。我们通常使用MODE_PRIVATE
最后,我建议您首先从中获取数据,然后检查是否需要更改,您可以更改数据,然后再次保存。