Android – DB없이 데이터를 불러오고 저장하기 with. 코틀린

‘안드로이드 앱’ 에 데이터를 저장하고 불러오는 법을 알아 봅시다!

SharedPreference 방식입니다.

SharedPreference
: 쉐어드 프리퍼런스는 App에 포함되는 데이터 파일 (1) 만들어서 디바이스에 저장하거나 (2) 관리하는 객체이다. 데이터 파일을 편집할 때는 에디터 객체를 불러와야 한다.

예제를 통해 알아 봅시다!

< 데이터 파일에 데이터 저장하는 방법 >

private fun saveData(height:Int,weight:Int){
        val pref = this.getPreferences(0)
        val editor=pref.edit()

        // 키와 밸류를 쌍으로 저장하고 apply한다
        editor.putInt("KEY_HEIGHT",height)
            .putInt("KEY_WEIGHT",weight)
            .apply()
    }

이 메소드는 sharedPreference를 통해 파일에 데이터를 저장하는 함수입니다.

sharedPreference객체를 불러오려면 AppCompactActivity를 상속받는 객체에서 getPreferences메소드를 호출해야 합니다. 인수에 0을 주면 sharedPreference을 기본 세팅으로 한다는 것인데 이해하지 않아도 됩니다.

pref객체가 생성되면 App에 포함되는 데이터 파일이 만들어 졌다는 것입니다. 이제 edit메소드를 이용해서 에디터 객체도 만듭니다.

객체가 모두 생성되면 pref객체는 App에 포함되는 데이터 파일을 관리하고 editor객체는 데이터 파일을 편집할 수 있습니다.

데이터 파일에 데이터를 저장하려면 put메소드를 사용하면 됩니다. 데이터는 항상 ‘키’와 ‘밸류’ 쌍으로 저장해야 하며 저장이 완료된 후에는 apply메소드를 호출함으로써 마무리 짓습니다!

< 데이터 파일에서 데이터를 가져오는 방법 >

 private fun loadData(){
        val pref=this.getPreferences(0)
        // 키에 해당되는 밸류를 가져오는데 저장된 값이 없으면 0을 가져온다
        val height=pref.getInt("KEY_HEIGHT",0)
        val weight=pref.getInt("KEY_WEIGHT",0)

        if(height!=0 && weight!=0){
            heightEditText.setText(height.toString())
            weightEditText.setText(weight.toString())
        }
    }

파일 관리를 위해서 pref객체를 다시 생성합니다.

파일에서 데이터를 가져올 때는 get메소드를 이용하면 됩니다. 저장할 때 입력한 키를 기반으로 밸류를 반환하는 함수입니다. 밸류를 못 찾으면 0을 반환하게 됩니다.

필자는 밸류를 가져와서 0이 아니면 에딧 텍스트 위젯의 텍스트를 수정하였습니다.

< sharedPreference 응용하기 >

데이터 파일에 데이터를 저장하고 가져오는 법을 배웠습니다. 이를 응용해봅시다.

  • EditText에 값이 자동 생성되게 하는 법
  1. loadData() 호출 -> get한 데이터가 있으면 editText 텍스트를 get한 데이터로 수정
  2. editText는 수정된 데이터를 유지하던지 데이터를 바꾸던지 사용자 자유
  3. onCreate에서 editText 텍스트로부터 데이터 가져오기
  4. saveData(가져온 데이터) 호출해서 put,apply

< I use Korean to save time on lecture or explanation. If you need an explanation, please send an email or comments!! >



			

2 thoughts on “Android – DB없이 데이터를 불러오고 저장하기 with. 코틀린

Leave a Reply

Your email address will not be published. Required fields are marked *