存储json数据共享引用,而不是覆盖



我创建了一个应用程序,当用户添加新数据时,会有新的标签我已经尝试过了,但我想知道如何制作存储在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();

另一种方法是更改SharedPreferencesMODE_APPEND

但你必须知道,这并不意味着你为每个键添加多个值。这意味着,如果文件已经存在,它将被附加到而不是擦除。我们通常使用MODE_PRIVATE

最后,我建议您首先从中获取数据,然后检查是否需要更改,您可以更改数据,然后再次保存。

最新更新