Nuke Olaf - Log Store
[Android] 안드로이드 - 리사이클러뷰 스크롤 상태저장 본문
onSaveInstanceState를 사용하여 리사이클러뷰의 스크롤 중인 상태를 저장할 수 있다.
아래의 예시는 ActivityDetail 이 onCreate() 된 후,
다른 액티비티(ActivityAnother)를 호출하여 ActivityDetail 이 잠시 액티비티 스택에 쌓여있다가
다시 ActivityDetail 로 돌아와 onResume() 을 호출할때, 저장되었던 상태를 보여주도록 한다
class ActivityDetail : AppCompatActivity() {
private var recyclerViewState: Parcelable? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_detail)
postDetailRv.adapter = PostDetailAdapter()
button.setOnClickListener {
openAnotherActivity()
}
}
override fun onResume() {
super.onResume()
if (recyclerViewState != null) {
setSavedRecyclerViewState()
}
}
private fun openAnotherActivity() {
saveRecyclerViewState()
Intent(this, ActivityAnother::class.java).apply {
startActivity(this)
}
}
private fun saveRecyclerViewState() {
// LayoutManager를 불러와 Parcelable 변수에 리사이클러뷰 상태를 Bundle 형태로 저장한다
recyclerViewState = postDetailRv.layoutManager!!.onSaveInstanceState()
}
private fun setSavedRecyclerViewState() {
postDetailRv.layoutManager!!.onRestoreInstanceState(recyclerViewState)
}
}
참고 사이트 >>>
'Android' 카테고리의 다른 글
[Android] 안드로이드 - 앱 종료, 재시작 (0) | 2020.05.08 |
---|---|
[Android] - 안드로이드 리사이클러뷰 무한 스크롤 (Infinite/Endless Scroll) (0) | 2020.05.06 |
[Android] 안드로이드 - 네트워크 타임아웃 시간 설정 (0) | 2020.05.05 |
[Android] 안드로이드 - 키보드 올리기, 내리기 (soft input) (0) | 2020.05.05 |
[Android] 안드로이드 - 고차함수 사용하여 SearchView BindingAdpater 만들기 (feat. dataBinding) (0) | 2020.05.04 |
Comments