Как сохранить объект Java в общих настройках - PullRequest
0 голосов
/ 03 июля 2018

Я получаю JSON от службы, сохраняю ее по своему усмотрению, и когда пользователю необходимо проверить данные сеанса или получить данные, он использует этот метод getProfileObject(), и он возвращает ArrayList в ответ.

Это мой метод, который отвечает за получение Json из preference и генерацию ArrayList с использованием Gson

SharedPreferences sharedPreferences=ApplicationContext.getAppContext().getSharedPreferences(USER_DATA_PREFERENCE, ApplicationContext.MODE_PRIVATE);

profileObject= sharedPreferences.getString(PROFILE_OBJECT, "");

if(!profileObject.isEmpty()) {
    GsonBuilder gsonBuilder = new GsonBuilder();
    Gson gson = gsonBuilder.create();
    this.dataList = Arrays.asList(gson.fromJson(profileObject, Profile.class));
    return dataList;
}

Теперь я хочу избегать этого Gson шага каждый раз, я хочу сохранить arrayList, это shared preference, возможно ли сохранить java array list в общих настройках.

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Попробуйте так ... Сохранить список массивов как сериализуемый объект, как показано ниже.

editor.putString("key", ObjectSerializer.serialize(currentTasks));// define arrayList

получить значение.

 currentTasks=(ArrayList<task>)ObjectSerializer.deserialize(prefs.getString(TASKS, ObjectSerializer.serialize(new ArrayList<task>())));



   Gson dataJson = new Gson();
   String userObject = dataJson.toJson(response.body());

после этого он сохраняет разделяемый объект userObject и получает данные.

0 голосов
/ 03 июля 2018
    public static void setArrayListPreference(Context context, ArrayList<String> list, String key){
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        SharedPreferences.Editor editor = prefs.edit();
        Gson gson = new Gson();
        String json = gson.toJson(list);
        editor.putString(key, json);
        editor.apply();
    }

public static ArrayList<String> getArrayListPreference(Context context, String key){
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        Gson gson = new Gson();
        String json = prefs.getString(key, null);
        Type type = new TypeToken<ArrayList<String>>() {}.getType();
        return gson.fromJson(json, type);
    }
0 голосов
/ 03 июля 2018

Попробуйте использовать класс View Model, который сохранит его глобально в течение жизненного цикла действия.

надеюсь, это поможет: https://developer.android.com/topic/libraries/architecture/viewmodel#implement

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...