在我的应用程序中,我要将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;
    }

08-27 22:31