简体   繁体   中英

How to store ArrayList into sharedPreferences in Android

In my application I want store ArrayList into sharedPreferences and get this list in another page!
For store this List i used this library : https://github.com/MrNouri/GoodPrefs

I write below codes, but when get this data I don't know how can get data!

My codes for store list:

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);

My codes for get data:

private List<DataItem> storedStepsBodyList = new ArrayList<>();

    Toast.makeText(context, ""+
            GoodPrefs.getInstance().getObjectsList(TEST_STEPS_STORED_LIST,).size()
            , Toast.LENGTH_SHORT).show();

This library for get list give me 2 constructor, one is tag name and second value is default! (TEST_STEPS_STORED_LIST,)

But I don't know can i set default value for second item of constructor!

I write this GoodPrefs.getInstance().getObjectsList(TEST_STEPS_STORED_LIST,storedStepsBodyList) but show me error for this storedStepsBodyList .

How can i fix it?

Simple way, you can use Gson library, add it to build.gradle, it will serialize your list to JSON and save it to 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;
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM