본문 바로가기
IT/Android

Kotlin] Custom 모델로 정의된 배열 저장하기 // sharedPreference

by 깻잎쌈 2021. 3. 15.
반응형

ListViewItem으로 정의된 리스트뷰 아이템 배열을 저장하는 SharedPreferences 함수 만들기 


1.

gradle에 gson 추가해주고 

implementation 'com.google.code.gson:gson:2.8.5'

 

 

google/gson

A Java serialization/deserialization library to convert Java Objects into JSON and back - google/gson

github.com

2.

저장하는 함수 

fun setStringArrayPref(key: String, values: ArrayList<ListViewItem>) {
        val gson = Gson()
        val json = gson.toJson(values)
        val prefs = getSharedPreferences("SETTINGS", Context.MODE_PRIVATE)
        val editor = prefs.edit()
        editor.putString(key, json)
        editor.apply()
}

 

3.

저장한 값 불러오는 함수 

fun getStringArrayPref(key: String): ArrayList<ListViewItem> {
        val prefs = getSharedPreferences("SETTINGS", Context.MODE_PRIVATE)
        val json = prefs.getString(key, null)
        val gson = Gson()

        val storedData: ArrayList<ListViewItem> = gson.fromJson(json,
            object : TypeToken<ArrayList<ListViewItem?>>() {}.type
        )

        return storedData
}

 

TEST 코드

val workoutData = getStringArrayPref("listData")
        if(workoutData.size > 0){
            for(i in 0 until workoutData.size)
                Log.d("TAG", workoutData[i].workoutName.toString())

}

 

반응형

댓글