1. String 형식으로 저장 할때
public void setStringArrayPref(Context context, String key, ArrayList<String> values) {
SharedPreferences prefs = context.getSharedPreferences("key", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
JSONArray a = new JSONArray();
for (int i = 0; i < values.size(); i++) {
a.put(values.get(i));
}
if (!values.isEmpty()) {
editor.putString(key, a.toString());
} else {
editor.putString(key, null);
}
editor.apply();
}
public ArrayList<String> getStringArrayPref(Context context, String key) {
SharedPreferences prefs = context.getSharedPreferences("key", MODE_PRIVATE);
String json = prefs.getString(key, null);
ArrayList<String> urls = new ArrayList<String>();
if (json != null) {
try {
JSONArray a = new JSONArray(json);
for (int i = 0; i < a.length(); i++) {
String url = a.optString(i);
urls.add(url);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return urls;
}
2. 커스텀 객체를 저장 할때
public void setStringArrayPref(Context context, String key, ArrayList<Data> values) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
JSONArray a = new JSONArray();
Gson gson =new GsonBuilder().create();
for (int i = 0; i < values.size(); i++) {
String string = gson.toJson(values.get(i), Data.class);
a.put(string);
}
if (!values.isEmpty()) {
editor.putString(key, a.toString());
} else {
editor.putString(key, null);
}
editor.apply();
}
public ArrayList<OrderData> getStringArrayPref_item(Context context, String key) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String json = prefs.getString(key, null);
ArrayList<OrderData> OrderDatas = new ArrayList<OrderData>();
Gson gson =new GsonBuilder().create();
if (json != null) {
try {
JSONArray a = new JSONArray(json);
for (int i = 0; i < a.length(); i++) {
OrderData orderData = gson.fromJson( a.get(i).toString() , OrderData.class);
OrderDatas.add(orderData);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return OrderDatas;
}
반응형
'Android' 카테고리의 다른 글
안드로이드에서 Dialog 버튼 결과를 액티비티에서 콜백 받기 (0) | 2021.05.21 |
---|---|
레이아웃을 이미지로 변경하고 pdf로도 저장하기 (0) | 2021.05.13 |
안드로이드 라이프사이클(android lifecycle) (0) | 2021.05.01 |
코틀린 프래그먼트 데이터 전달 (0) | 2021.04.25 |
Kotlin(코틀린) 에서 fragment 를 써보자 (0) | 2021.04.04 |
ListView(리스트뷰) 자동 높이, 크기 조절 (0) | 2021.03.29 |
MVVM 패턴 설명 - 2(view Model) (0) | 2021.03.27 |
MVVM 패턴 - 설명(1) (View) (0) | 2021.02.11 |