StaggeredGridLayoutManager 를 이용해서
각 항목마다 보여지는 방식을 다르게 구성하고,
마지막 카테고리는 영상처럼 Grid 뷰로 구성하였는데,
동적으로 Span 카운트를 변경하려고 해보니,
ScrollListener가 동작을 하지 않았다.
stackoverflow 에서 알려주는 방식은 대충
home_rv.apply {
layoutManager = StaggeredGridLayoutManager(spanCount, LinearLayoutManager.VERTICAL)
adapter = this@HomeViewModel.adapter
}
위와 같이 layoutManager 를 바꿔 주면서 SpanCount 를 변경해주고,
adapter 또한 변경해 주라는 내용이었다.
물론 이방식도 단순하게 보여지는 갯수만 바꾸는 거라면 큰 문제는 없는
코드이지만,
무한 스크롤을 사용하고 있는 나에게는
위 방식을 적용후 보여지는 갯수는 바뀌었지만,
스크롤 이벤트가 더이상 동작 하지 않았다.
그래서 그냥 StaggeredGridLayoutManager의 속성을 찾아보니
바로 해결할수 있는 방법이 있었다.
fun changeGridlayoutSpanCount(spanCount: Int) {
if(spanCount < 2) return
(home_rv.layoutManager as StaggeredGridLayoutManager).spanCount = spanCount
}
이렇게 기존 RecyclerView의 layoutManager 를 StaggeredGridLayoutManager로 케스팅 해서
spanCount 만 바꿔주면 아래 영상 처럼 바로바로 적용 가능 하다 .
'공부방 > Android' 카테고리의 다른 글
행복한 코딩을 위하여!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!