Как сохранить список Array в общих настройках и получить доступ к другому фрагменту

Я хочу сохранить данные списка массивов в sharedpreferences и получить доступ к этим данным в другом фрагменте. Пожалуйста, дайте мне предложение

Содержание массива приведено ниже

public String productname;
public String productunit;
public String productquantity;
public String productprice;
public String productdiscount;

3 ответа

Вот решение, Шаг 1: Создайте класс как

SharedPreference

public static final String FAVORITES = "PRODUCTS";
private SharedPreferences settings;
private Editor editor;

public SharedPreference() {
    super();
}

Теперь код для сохранения ArrayList

 public void saveArrayList(Context context, List<String> unread_ids) {
    settings = context.getSharedPreferences(AppConfig.KEY_PREFS_NAME,
            Context.MODE_PRIVATE);
    editor = settings.edit();
    Gson gson = new Gson();
    String jsonFavorites = gson.toJson(unread_ids);
    editor.putString(FAVORITES, jsonFavorites);
    editor.apply();
}

Теперь код для сохранения Arraylist

public ArrayList<String> getSavedList(Context context) {
    // SharedPreferences settings;
    List<String> unReadId;

    settings = context.getSharedPreferences(AppConfig.KEY_PREFS_NAME,
            Context.MODE_PRIVATE);

    if (settings.contains(FAVORITES)) {
        String jsonFavorites = settings.getString(FAVORITES, "");
        Gson gson = new Gson();
        String[] favoriteItems = gson.fromJson(jsonFavorites,
                String[].class);

        unReadId = Arrays.asList(favoriteItems);
        unReadId = new ArrayList<>(unReadId);

    } else {
        return new ArrayList<String>();
    }

    return (ArrayList<String>) unReadId;
}

Код для сохранения списка:

sharedPreferences.saveArrayList(context, <YOUR LIST NAME>);

Теперь используйте код, чтобы получить свой Arraylist в другом фрагменте

<LIST NAME> = sharedPreference.getSavedList(getActivity());

Перед получением и сохранением списка массивов вы должны объявить "sharedPreference" и создать его объект.

Надеюсь, что это поможет вам.

Я сделал что-то подобное, прежде чем, пожалуйста, проверьте этот код

private List<String> list; /// adding checked items to list

внутри вашего OnCreate() добавить эту строку

list = new ArrayList<>(); /// checked items list

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

int searchListLength = items.size();
        for (int i = 0; i < searchListLength; i++) {
            if (items.get(i).isChecked()) {
                items.get(i).getId();
                Log.d("listitem", String.valueOf("id=" + items.get(i).getId()));
                list.add("id=" + items.get(i).getId());
            }
        }
        StringBuilder stringBuilder = new StringBuilder();
        for (String s : list) {
            stringBuilder.append(s);
            stringBuilder.append("&");
        }

  SharedPreferences notif_array = getSharedPreferences("items_array", Context.MODE_PRIVATE);
            SharedPreferences.Editor editor_notaif = notif_array.edit();
            editor_notaif.putString("id", stringBuilder.toString());
            editor_notaif.apply();
            Intent intent = new Intent(MainActivity.this, Filtered_Activity.class);
            startActivity(intent);

Внутри вашего другого действия / фрагмента

приватная строка new_result;

SharedPreferences notif_array = getSharedPreferences("items_array", Context.MODE_PRIVATE);
        new_result = notif_array.getString("id", null);

Вы можете сделать это с помощью PowerPreference библиотека в 3 простых шага!

https://github.com/AliEsaAssadi/Android-Power-Preference

1. Создать массив

ArrayList<String> list = new ArrayList<>();
        list.add("example");
        list.add("anotherText");

2. Написать в общий доступ

PowerPreference.defult().put("list",list);

3. Получение массива

ArrayList<String> list = PowerPreference.defult()
                                 .getObject("list", ArrayList.class);
Другие вопросы по тегам