[Android] SharedPreferences로 검색 리스트 만들기

2022. 11. 21. 14:25·Android/Data
반응형
 

[Android] SharedPreferences에 ArrayList로 저장하기

안드로이드에서 가벼운 데이터를 저장하기 위해 SharedPreferences를 사용하곤 한다. ShardPreferences는 key-value 형태로 기기에 데이터를 저장된다. value에는 String, Int, Boolean과 같은 자료형들을 담을 수

ogyong.tistory.com

저번에 SharedPreferences에 ArrayList로 저장하는 것을 해봤는데, 이것을 활용해서 검색 리스트를 만들어보려고 한다.

 

검색 리스트는 RecyclerView로 표현할 거고, 검색 완료를 했을 때 Adapter에 있는 리스트를 갱신할 것이다.


Adapter 작업

class SearchListAdapter: RecyclerView.Adapter<SearchListAdapter.ViewHolder>() {
    private var itemList: ArrayList<PrefData> = arrayListOf()

    inner class ViewHolder(private val mBinding: ItemSearchBinding) : RecyclerView.ViewHolder(mBinding.root) {
        fun bind(mItem: PrefData) {
            mBinding.tvSearchText.text = mItem.text
            mBinding.tvSearchDate.text = mItem.date
        }
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val binding = ItemSearchBinding.inflate(
            LayoutInflater.from(parent.context),
            parent,
            false
        )

        return ViewHolder(binding)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.bind(itemList[position])
    }

    override fun getItemCount(): Int {
        return itemList.size
    }

    fun setList(pList: ArrayList<PrefData>) {
        itemList = pList
        notifyItemRangeChanged(0, itemList.size)
    }
}

 

초기에 itemList를 빈 리스트로 두고 Activity에서 setList에 값이 전달되면

notifyItemRangeChanged를 통해서 RecyclerView를 업데이트한다.


Activity에서 Adapter에 리스트 넘겨주기

mAdapter.setList(arrayListPrefs) // Adapter에 데이터 넘김

앱이 실행되고 onCreate에서 SharedPreferences에 데이터가 있는지 확인하여 리스트를 넘겨준다.

 

데이터가 없을 경우에 빈 화면으로 보이기가 싫다면 visible과 gone을 적절히 사용해서

"검색 이력이 없습니다." 등의 텍스트로 표시하거나 이미지를 노출하는 등의 처리를 하면 될 것 같다.

 

앱 실행 이후에는 EditText에서 검색 완료 이벤트가 발생하면 Adapter에 리스트를 넘겨준다.

(검색 이후 EditText에 텍스트가 남지 않도록 클리어 처리를 했다.)


EditText에서 검색 완료 이벤트가 발생했을 때 리스트가 쌓이고,

앱을 종료하고 재실행했을 때 검색했던 리스트가 잘 표시되는 것을 확인할 수 있다.

 

만약 검색 리스트에서 항목을 삭제하고 싶다면 ArrayList의 removeAt이나 removeAll을 사용하고,

적절한 notifyChanged를 통해 RecyclerView를 업데이트하면 된다.

 

전체 코드

반응형

'Android > Data' 카테고리의 다른 글

[Android][Compose] DataStore 사용해보기  (0) 2024.04.01
[Android] Android Studio에서 쿼리 실행하기  (0) 2023.01.09
[Android] EncryptedSharedPreferences로 암호화 하기  (0) 2022.11.24
[Android] SharedPreferences에 ArrayList로 저장하기  (0) 2022.11.16
'Android/Data' 카테고리의 다른 글
  • [Android][Compose] DataStore 사용해보기
  • [Android] Android Studio에서 쿼리 실행하기
  • [Android] EncryptedSharedPreferences로 암호화 하기
  • [Android] SharedPreferences에 ArrayList로 저장하기
O_Gyong
O_Gyong
안드로이드 기술 정리
  • O_Gyong
    O_Gyong's TECH
    O_Gyong
    • 분류 전체보기 (81)
      • Android (58)
        • ADB (4)
        • Architecture (1)
        • Data (5)
        • Firebase (2)
        • Network & Connecting (4)
        • Security & Privacy (3)
        • UI (24)
        • 기타 (3)
        • 이슈 처리 (14)
      • Android Studio (5)
      • Git (3)
      • 작업 일지 (13)
  • 최근 글

  • 인기 글

  • 태그

    해상도
    hilt
    BLE
    CalendarView
    Kotlin
    ADB
    Paging3
    Android
    paging
    Andoird
    loading
    Pagination
    Bluetooth
    github
    flow
    CameraX
    webview
    issue
    compose
    GIT
    firebase
    Android Studio
    Navigation
    recyclerview
    Room
    TabLayout
    SharedPreferences
    MQTT
    kizitonwose
    in-app update
  • 링크

    • GitHub
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • hELLO· Designed By정상우.v4.10.4
O_Gyong
[Android] SharedPreferences로 검색 리스트 만들기
상단으로

티스토리툴바