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

리스트뷰 Sharedpreference 아이템 저장

0 추천

안녕하세요. 

안드로이드 공부중인 학생입니다.

커스텀 리스트뷰 공부하면서 Sharedpreference를 사용해서 메모를 추가버튼을 누를때마다 리스트가 추가되고 추가된 메모를 저장하는걸 구현해보려고 하는대

1개의 리스트는 추가가되고 그 후로 추가버튼을 누르고 메모를 입력하면 계속 메모내용만 바뀌내요..

그래서 고민해서 보니 이부분에서 String input에 값이 계속 변경되는거 같은대

혹시 계속 추가되게 하려면 어떡해 해야할까요??ㅠㅠ

String 객체를 반복문으로 계속 생성해볼까도 생각햇는대 변수명을 반복문으로 다르게 생성할수가 없더라구요.

선배님들의 조언 부탁드립니다.

SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
            String input = (pref.getString("input_memo",null));
            this.saveddata.add(input);
            adapter.notifyDataSetChanged();

결론적으로 제가 구현하고 싶은건 추가버튼 누르고 입력한 메모가 리스트로 나타나고

메모 리스트가 저장되는 것입니다.

 

package com.example.user.shared;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;


import static java.lang.String.valueOf;

public class SubActivity extends Activity {

    ArrayList<String> saveddata = new ArrayList<String>();

    Adapter adapter;

    ListView listView;

    Button btnadd;


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);

        //메모 추가
        listView = (ListView)findViewById(R.id.listview);
        adapter = new Adapter(this,saveddata);
        listView.setAdapter(adapter);

        btnadd = (Button)findViewById(R.id.btnadd);

        btnadd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(SubActivity.this,Memo.class);
                startActivity(intent);
            }
        });

            SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
            String input = (pref.getString("input_memo",null));
            this.saveddata.add(input);
            adapter.notifyDataSetChanged();
    }
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
package com.example.user.shared;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Memo extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.memo);

        final EditText input_memo = (EditText)findViewById(R.id.input_memo);
        Button btnyes = (Button)findViewById(R.id.btnyes);

        btnyes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Memo.this,SubActivity.class);
                SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
                SharedPreferences.Editor editor = pref.edit();
                editor.putString("input_memo",input_memo.getText().toString());
                editor.commit();
                startActivity(intent);
                finish();
            }
        });
    }
}

sdfa1234 (280 포인트) 님이 2017년 12월 11일 질문

1개의 답변

0 추천
저장보튼 누를때마다

 

리스트에 스트링값을 add시켜서 쉐어드에 저장시킨 후 불러올땐 리스트 통째로 불러온다면

되지 않을까 싶슴당
익명사용자 님이 2017년 12월 11일 답변
불러올땐 리스트 통째로 불러온다면 말씀하신 것처럼
쉐어드를 사용해서 리스트를 통째로 불러올수도 있나요??
맞습니당. 같은 key로 저장을 하게 되면 내용만 갱신되는것 처럼 저장시마다 반복해주면 원하시는 동작을 기대해 볼 수 있겠습니당 ㅎㅎ
쉐어드에서 리스트 불러옴(ArrayList던 뭐던 저장한 값) -> 정보입력 ->버튼클릭 -> 쉐어드로 저장 요 순서가 됩니당.
삭제도 같은 맥락이라고 볼 수 있지여ㅎㅎ
...