在我的应用程序中,我要将ArrayList
存储到sharedPreferences
并在另一个页面中获得此列表!
为了存储此列表,我使用了以下库:https://github.com/MrNouri/GoodPrefs
我写下面的代码,但是当获取此数据时,我不知道如何获取数据!
我的商店清单代码:
for (int i : intList) {
stringBuilder.append("ID : ").append(testPlans.get(i).getId())
.append("Type : ").append(testPlans.get(i).getItemType())
.append("Content").append(steps.get(i).getStepData().toString()).append("-");
App.stepsBodyList.add(new DataItem(testPlans.get(i).getId(),
testPlans.get(i).getItemType(),
steps.get(i).getStepData().toString()));
}
GoodPrefs.getInstance().saveObjectsList(TEST_STEPS_STORED_LIST, App.stepsBodyList);
我的获取数据代码:
private List<DataItem> storedStepsBodyList = new ArrayList<>();
Toast.makeText(context, ""+
GoodPrefs.getInstance().getObjectsList(TEST_STEPS_STORED_LIST,).size()
, Toast.LENGTH_SHORT).show();
这个获取列表的库给了我2个构造函数,一个是标记名,第二个是默认值!
(TEST_STEPS_STORED_LIST,)
但是我不知道我可以为构造函数的第二项设置默认值!
我写了这个
GoodPrefs.getInstance().getObjectsList(TEST_STEPS_STORED_LIST,storedStepsBodyList)
,但显示了这个storedStepsBodyList
的错误。我该如何解决?
最佳答案
简单的方法,您可以使用Gson
库,将其添加到build.gradle,它将序列化您的列表到JSON
并将其保存到SharePreference
implementation 'com.google.code.gson:gson:2.8.6'
public void saveItems(List<Item> items) {
if (items != null && !items.isEmpty()) {
String json = new Gson().toJson(items);
mSharedPreferences.edit().putString("items", json).apply();
}
}
public List<Item> getItems() {
String json = mSharedPreferences.getString("items", "");
if (TextUtils.isEmpty(json)) return Collections.emptyList();
Type type = new TypeToken<List<Item>>() {
}.getType();
List<Item> result = new Gson().fromJson(json, type);
return result;
}