Как сохранить список 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);