단순하게 SharedPreferences를 이용하여 하나의 text를 저장하고 불러오는 것은 정말 쉽습니다.
하지만 수많은 text들을 저장하고 그것들을 하나씩 조회하는 방법은 For문과 고유의 count 값이 필요합니다.
private static final String PREF_NAME = "MyPreferences";
private static final String KEY_COUNT = "count";
private static final String KEY_TITLE = "title";
private static final String KEY_CONTENT = "content";
SharedPreferences sharedPreferences;
--생략--
@Override
public void onClick(DialogInterface dialogInterface, int i) {
sharedPreferences = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
String title = editText_title.getText().toString(); //저장할 title 정보
String content = editText_content.getText().toString(); //저장할 content 정보
int itemCount = sharedPreferences.getInt(KEY_COUNT, 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(KEY_TITLE + itemCount, title);
editor.putString(KEY_CONTENT + itemCount, content);
editor.putInt(KEY_COUNT, itemCount + 1);
editor.apply();
}
onClick()을 실행하면 editText에서 각각 text를 가져와 title과 content에 할당하고 SharedPreferences를 이용하여 저장하는 것을 볼 수 있습니다. 하지만 putString( key, value ) 에서 key 값에 + itemCount가 있는데요. 이것은 각각 title 과 content를 저장할 때 서로 다른 고유 key 값을 부여하기 위해서입니다.
그래서 저장할 때 마다 itemCount 값이 1씩 증가하게 되면서 서로 다른 Key값을 가지게 됩니다.
그리고 SharedPreferences로 title과 content를 모두 저장했으니 조회를 해야하는데요.
private static final String PREF_NAME = "MyPreferences";
private static final String KEY_COUNT = "count";
private static final String KEY_TITLE = "title";
private static final String KEY_CONTENT = "content";
SharedPreferences sharedPreferences;
--생략--
private List<Content> loadData() {
List<Conteㅊnt> itemList = new ArrayList<>();
sharedPreferences = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
// SharedPreferences에서 데이터 읽어오기
int itemCount = sharedPreferences.getInt(KEY_COUNT, 0);
for (int i = 0; i < itemCount; i++) {
String titleKey = KEY_TITLE + i;
String contentKey = KEY_CONTENT + i;
String title = sharedPreferences.getString(titleKey, "");
String content = sharedPreferences.getString(contentKey, "");
itemList.add(new Content(title, content));
}
return itemList;
}
loadData()를 따로 만들어서 getString()을 이용하여 정보를 조회해보았습니다.
sharedPreferences.getInt(KEY_COUNT, 0)로 현재 저장한 개수를 itemCount에 할당하고 For문을 이용하여 itemCount까지 반복하여 title과 content를 가져올 수 있었습니다.
그리고 가져온 title과 content는 Content형의 List 배열에 추가하고 추가 코드를 통해 recyclerView에 title 과 content가 하나의 아이템으로 보여질 수 있도록 만들어 저장, 조회 기능을 구현할 수 있었습니다.
'안드로이드 스튜디오 앱 개발 > 실제 앱 개발 과정' 카테고리의 다른 글
[안드로이드 스튜디오] 앱에서 창 다시 보지 않기 기능 구현하기 (SharedPreference 이용) (0) | 2024.05.03 |
---|---|
안드로이드 스튜디오 업데이트 확인 방법 + 버전 확인하기 [Android Studio] (0) | 2024.04.18 |
[Android Studio] 내 휴대폰 단말기로 제작한 애플리케이션(APP) 실행해서 검토하기 (0) | 2023.07.13 |
[Android Studio] 탭 레이아웃(TabLayout)으로 프래그먼트 화면전환하기 (0) | 2023.07.13 |
[ Android Studio ] 깜빡이는 애니메이션(Animation) 텍스트뷰(TextView) 만들기 + 시한폭탄 예제 (0) | 2023.07.11 |