- [Android] 개발공부 52일차 TIL - SharedPreferences 객체 저장(Gson)2024년 02월 01일 10시 54분 08초에 업로드 된 글입니다.작성자: 짧은 코딩끈
일자 : 2024.02.01
📝TIL 정리
💡SharedPreferences 객체 저장(Gson)
간단한 내역을 앱 데이터에 저장하기 위해서 SharedPreferences를 사용한다. (저장형식 : XML)
하지만 저장할 수 있는 데이터 타입이 한정적이므로(String, Int, Boolean 등)
객체를 바로 저장할 수 없다.
이때 객체 데이터 리스트를 (mutablelist, arraylist 등) json 형식으로 전환하여 String으로 저장할 수 있도록 하면 된다.
하지만, 직접 객체 데이터를 json 바꾸는것은 쉽지 않기에 우리는 Gson 라이브러리를 활용하여 간편하게 바꿀 수 있다.
gradle(module)에 의존성 추가한다. (24.02.01 기준 2.10.1 최신버전)
implementation("com.google.code.gson:gson:2.10.1")
sharedpreferences를 여러번 사용할 경우 class화 하는게 편하기에 따로 만든다.
(참고 : SharedPreferences(클래스) )
class App : Application() { companion object { lateinit var prefs : SharedPreferencesManager } override fun onCreate() { prefs = SharedPreferencesManager(applicationContext) super.onCreate() } }
class SharedPreferencesManager(context: Context) { private val PREFS_FILENAME = "prefs" private val DEFAULT_STRING = "" private val DEFAULT_INT = 0 private val DEFAULT_BOOLEAN = false private val KEY_INPUT = "inputdata" private val KEY_LOCKER = "lockerlist" private val prefs = context.getSharedPreferences(PREFS_FILENAME,0) private val gson = Gson()
그리고 저장과 불러오기 기능에 대해서 메소드를 만든다.
fun saveMyLockerList(list : MutableList<Document>) { val json = gson.toJson(list) prefs.edit().putString(KEY_LOCKER,json).apply() } fun loadMyLockerList() : MutableList<Document>{ var result : MutableList<Document> = mutableListOf() if (prefs.contains(Constans.KEY_LOCKER)) { val json = prefs.getString(Constans.KEY_LOCKER, Constans.DEFAULT_STRING) try { val typeToken = object : TypeToken<MutableList<Document>>() {}.type result = gson.fromJson(json, typeToken) } catch (e: JsonParseException) { e.printStackTrace() } } return result }
그리고, 저장해야하는 순간에 다음과 같은 메소드를 작성한다. (본인은 검색된 아이템을 클릭했을 때 해당 리스트를 저장)
App.prefs.saveMyLockerList((activity as? MainActivity)?.favoriteList ?: mutableListOf())
저장된 내역을 살펴보면 리스트가 String 형식으로 저장된것을 볼 수 있다.
SharedPreferences를 json 포맷으로 관리하기
이번 포스팅에서는 SharedPreferences에 복잡한 형태의 데이터를 json 포맷으로 저장하고 불러오는 법에 대해 알아보도록 하겠습니다. SharedPreferences는 Key-Value 형태로 이루어진 딕셔너리를 저장하도록
cliearl.github.io
[Android] SharedPreferences에 ArrayList로 저장하기
안드로이드에서 가벼운 데이터를 저장하기 위해 SharedPreferences를 사용하곤 한다. ShardPreferences는 key-value 형태로 기기에 데이터를 저장된다. value에는 String, Int, Boolean과 같은 자료형들을 담을 수
ogyong.tistory.com
금일 회고
상태:😐
회고:
오늘은 sharedpreferences와 많이 싸웠다.
MVVM이랑도 싸워야하는데
너무 초반 몹에 정신이 팔려서 뒤늦게 MVVM을 공부하고 조금씩 적용하고 있다.
완벽히 MVVM을 이해한것은 아니지만 서로간의 의존성을 낮춰서
복잡도를 낮추고 코드를 재사용하며, 유지보수에 용이하다는 것으로 이해했다.
하지만, 역시 직접 코드를 쳐보면서 해야지 결국에는 체화되는 부분이라
사실 너무 어렵긴한데 그래도 어떻게든 적용은 해봐야겠다.
'개발공부 > 일지' 카테고리의 다른 글
다음글이 없습니다.이전글이 없습니다.댓글