@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
recyclerView = (RecyclerView) findViewById(R.id.recycleView);
button = (Button) findViewById(R.id.button);
editText = (EditText)findViewById(R.id.editText);
list = new ArrayList<>();
arrayList = new ArrayList<String>();
adt = new AdapterActivity(Chat_List.this, list, R.layout.chat_list);
layoutManager = new LinearLayoutManager(Chat_List.this);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setFocusable(false);
recyclerView.setAdapter(adt);
SharedPreferences sharedPreferences =PreferenceManager.getDefaultSharedPreferences(Chat_List.this);
int size = sharedPreferences.getInt("size", 0);
for(int i = 0; i<size; i++)
{
chat_data = new Chat_Data(sharedPreferences.getString("num"+i, null));
list.add(chat_data);
Log.i("List-size", String.valueOf(list.size()));
adt.notifyDataSetChanged();
}
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(editText !=null && editText.length()!= 0)
{
text = editText.getText().toString();
chat_data = new Chat_Data(text);
list.add(chat_data);
arrayList.add(text);
adt.notifyDataSetChanged();
}
else
{
button.setEnabled(true);
Toast.makeText(getApplication(), "내용을 입력해주세요", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void onPause()
{
super.onPause();
Log.i("arrayList-size", String.valueOf(arrayList.size()));
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(Chat_List.this);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("size", list.size());
for(int i = 0; i<list.size(); i++)
{
editor.putString("num"+i, list.get(i).toString()); <-- 여기 이 list(List<ArrayList>) 를
}
editor.commit();
}
위 코드처럼 하면 앱을 종료했다가 다시 실행시켜도 앱에 데이터가 남아있는데요,
onPause() 를
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(Chat_List.this);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("size", arrayList.size());
for(int i = 0; i<arrayList.size(); i++)
{
editor.putString("num"+i, arrayList.get(i).toString()); <-- 이런식으로 arrayList를
}
editor.commit();
이런식으로, list 부분을 arrayList로 바꾸면 전에 저장되었던 값들은 모두 사라지고, 종료했다가 다시 실행시켰을 때, 저장되었었던 데이터가 모두 사라집니다;
왜그런 걸까요???
그리고 또 궁금한게; List<Chat_Data> list = new ArrayList<>(); 이런식으로 만들었고,
onPause부분에 for문 안에 코드인데요
editor.putString("num"+i, list.get(i)); 이거 처럼 하고싶은데
List<Chat_Data> list 부분이 String 이 아니라서 list.get(i) 이 안됩니다;
답변 부탁드립니다..!