마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

array 값을 sharedPreference로 저장하기

0 추천
public class scheduleFragement extends Fragment implements View.OnClickListener {

    private ArrayList<String> arrayList;
    private ArrayList<String> arrayList2;
    private ArrayAdapter<String> adapter;

    private EditText dateinput;
    private EditText eventinput;
    private SharedPreferences sharedPref;
    private SharedPreferences.Editor sharedEditor;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        //시간 맞춰주는거 건들X
        View v = inflater.inflate(R.layout.fragment_schedule, container, false);
        CalendarView calendarView =v.findViewById(R.id.calendar);
        long time = calendarView.getDate();
        Date d1 = new Date(time);
        Calendar c = Calendar.getInstance();
        c.setTime(d1);

        //선택한 시간 데이터 받아오기
        calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
            @Override
            public void onSelectedDayChange(CalendarView calendarView, int i, int i1, int i2){
                String date =i+"/"+i1+"/"+i2;
                dateinput.setText(date);
            }
        });


        //리스트 추가
        ListView listView = v.findViewById(R.id.events);
        String[] date = {};
        String[] events = {};
        arrayList=new ArrayList<>(Arrays.asList(date));
        arrayList2=new ArrayList<>(Arrays.asList(events));
        adapter=new ArrayAdapter<String>(getActivity(),R.layout.events,R.id.datedata,arrayList);
        listView.setAdapter(adapter);
        dateinput = v.findViewById(R.id.eventdate);
        eventinput = v.findViewById(R.id.event_summary);
        final Button add = v.findViewById(R.id.addevent);

        sharedPref = getContext().getSharedPreferences("pref", Activity.MODE_PRIVATE);
        sharedEditor = sharedPref.edit();

       add.setOnClickListener(new View.OnClickListener(){


            @Override
            public void onClick(View view) {
                String newdate = dateinput.getText().toString();
                String newevent = eventinput.getText().toString();
                arrayList.add(newdate +"   "+ newevent);
                arrayList2.add(newevent);
      
                adapter.notifyDataSetChanged();

                sharedEditor.putString("value", String.valueOf(arrayList));
                sharedEditor.commit();

            }
        });
        return v;

    }
    public void onResume(){
        super.onResume();
        String arrayList = sharedPref.getString("value","");
        setText(String.valueOf(arrayList));
    }

    private void setText(String s) {
    }

    @Override
    public void onClick(View view) {

    }
}

위와 같이 저장하였을때 프래그먼트 화면 전환을 하거나 어플을 껏다 켯을때도 add버튼 눌렀을때의 값이 저장되었으면 좋겠는데 어떠케 코딩을 바꾸면될까요...?

익명사용자 님이 2017년 12월 7일 질문

2개의 답변

0 추천
SharedPreferences 를 사용하여 ArrayList<String> 를 저장하시겠다면,

- 저장할때에는 ArrayList를 JSON형식 으로 바꾸고 JSON형식을 문자열로 변경하여 SharedPreferences에 저장

- 읽을때는 가져온 문자열을 JSON형식으로 변환한 다음, 바로 처리 또는 ArrayList로 변경하여 처리

하는 방법도 있습니다.
눈빛 (4,120 포인트) 님이 2017년 12월 8일 답변
0 추천
화면 전환하는 부분이라면 onStart() 함수 안에 sharedpreference 값을 넣어주면 되지 않을까요
익명사용자 님이 2017년 12월 8일 답변
...