본문 바로가기

open coding

oepn coding. preferences 소규모 데이터 저장 기본 코딩

반응형

안드로이드의 저장방식 중 하나.

많은양 data 저장 -> SQLite 이용(ex- 500명 학생 data)

소규모 data 저장 -> Preferences 이용 (ex- 설정data )

...................................

1. 저장 - 영구적 저장이라 앱 껐다 켜도 저장되어있음.

SharedPreferences 객체

(name : 암거나, 나중에 이걸로 검색할거임/ MODE_PRIVATE : 개인목적으로 사용한다 . 보통 이걸로 기본설정.)

SharedPreferences.Editor 데이터저장 객체

ex) editor.putBoolean(name, value)

 

하나의 이름으로 여러문자열 저장하고플때는 HashSet이용

 commit : 저장완료

.............................................................

2. 읽어오기

SharedPreferences 객체 그대로 가져오기(name, mode)

저장했던 data들도 그대로 가져오기.(key, dafault값 : 해당 data검색 안될때)

 

hashSet으로 저장한 문자열은 for문이용해서 읽어오기.




package com.www.preferences;

import androidx.appcompat.app.AppCompatActivity;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import java.util.HashSet;
import java.util.Set;

public class MainActivity extends AppCompatActivity {

    //define variables
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //connect to xml
        textView = findViewById(R.id.textView);
    }

//click button -> save(by using preferences)  , onlick도 설정해야
    public void btnMethod(View view){
        //Preferences 객체 추출
        SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
                    //name : 아무거나, 이거로 검색할거임
                    //mode_private : 개인목적으로 사용. 보통 이게 default.
        //data 저장위한 객체 추출
        SharedPreferences.Editor editor = pref.edit();

        //data 저장
        editor.putBoolean("data1", true);       //key, value
        editor.putFloat("data2", 11.11f);
        editor.putInt("data3",100);
        editor.putLong("data4",100000L);
        editor.putString("data5","문자열 data");


        HashSet<String> set = new HashSet<String>();    //문자열 여러개 저장할때 Hashset이용
        set.add("문자열1");
        set.add("문자열2");
        set.add("문자열3");
        set.add("문자열4");
        editor.putStringSet("data6", set);  //key, value

        editor.commit();        //저장완료

        textView.setText("저장완료");
    }//finish



//click button -> Read (by using preferences)  , onlick도 설정해야
    public void BtnMethod2(View view){
        //객체추출 ->위와 동일하게 name, mode
        SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
        //위와 동일하게 data read
        boolean data1 = pref.getBoolean("data1", false);    //key, default value:값없을때
        float data2 = pref.getFloat("data2",0.0f);
        int data3 = pref.getInt("data3", 0);
        long data4 = pref.getLong("data4",0L);
        String data5 = pref.getString("data5", null);
        Set<String> data6 = pref.getStringSet("data6", null);

        textView.setText("data1 : "+ data1 + "\n");
        textView.append("data2 : "+ data2 + "\n");
        textView.append("data3 : "+ data3 + "\n");
        textView.append("data4 : "+ data4 + "\n");
        textView.append("data5 : "+ data5 + "\n");

        for(String str : data6){            //hashset으로 저장한 문자열은 for문이용해 출력.
               textView.append("data6 : "+ str + "\n");
        }

    }//finish


}