RecyclerView를 사용하면서 어떤 사용자 action 등에 의해 특정 아이템 위치로 스크롤할 필요가 있습니다.

이때 손 쉽게 사용할 수 있는 방법이 있는데, 아래와 같이 기본적으로 제공되는 scrollToPosition 함수를 사용하는 것입니다.

// #1.
RecyclerView.scrollToPosition(position: Int)


// #2
RecyclerView.smoothScrollToPosition(position: Int)

이걸로 상황이 말끔히 해결된다면 그걸로 끝입니다. 하지만 때로는 위 함수로 부족한 경우가 있습니다.

예를 들어, 위 2개 함수를 통해 스크롤을 하게 되면 해당 아이템이 보이는 위치까지만 스크롤합니다. 다시 말해 내가 찾고자 하는 아이템을 최상단에 보여주도록 스크롤을 해주지 않는다는 의미입니다. 내가 찾고자 하는 아이템의 position이 10 위치에 있다면, 딱 그 아이템이 현재 화면의 가장 하단에 위치하게끔만 스크롤됩니다.

내가 이동하고자 하는 아이템을 최상단으로 위치시키면서 스크롤하기 위해서는 아래와 같이 사용해야 합니다.

val smoothScroller: SmoothScroller by lazy {
    object : LinearSmoothScroller(context) {
        override fun getVerticalSnapPreference() = SNAP_TO_START
    }
}
smoothScroller.targetPosition = position
recyclerView.layoutManager?.startSmoothScroll(smoothScroller)


0 Comments

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다