RecyclerView LayoutManager 소개
안녕하세요. 오늘은 RecyclerView의 LayoutManager의 소개와 종류에 대해 알아보는 시간을 갖겠습니다.
LayoutManager란?
Android의 Developer에 의하면 "RecyclerView의 아이템의 배치와 재사용에 대한 정책을 결정하면 LayoutManager의 종류에 따라 아이템의 배치가 변경됩니다."
참조 : 안드로이드 Developer - RecyclerView LayoutManager
LayoutManager의 종류
LayoutManager의 종류는 총 3가지로
- LinearLayoutManager : 수평, 수직의 스크롤 리스트
- GridLayoutManager : 행에 표시되는 아이템 갯수가 여러개인 리스트
- StaggeredGridLayoutManage : 높이가 불구칙적인 형태의 그리드 리스트
로 이루어져 있습니다.
LinearLayoutManager
기존의 ListView를 구현할 수 있도록 만드는 LayoutManager입니다.
setOrientation을 이용하여 스크롤의 방향을 설정할 수 있으며
scroll의 위치나 추가, 삭제에 대한 애니메이션 처리를 지원합니다.
GridLayoutManager
RecyclerView의 열에 2개 이상의 아이템을 넣고 싶을 때 사용하는 LayoutManager입니다.
val count = 3 // 열에 표시할 아이템의 갯수를 넣어주세요
recyclerView.setLayoutManager(GridLayoutManager(activity, count))
//또한 span을 이용하여 열에 표시할 아이템의 갯수를 유동적으로 변경 할 수 있습니다.
gridLayoutManager.spanSizeLookup = object:
GridLayoutManager.SpanSizeLookup(){
override fun getSpanSize(position: Int): Int{
//여기서 position의 인자를 통해 아이템의 갯수를 반환하면 됩니다,
}
}
span 2를 반환하면 총 3개의 구역에서 2개를 합쳐 이용한다는 뜻이며
span 1은 총 3개의 구역에서 1개만을 사용한다는 뜻입니다.
gridLayoutManager에 3을 넣어 layoutManager를 생성하였을 때
span3은 모든 열을 다 사용하는 한개의 아이템만 보인다는 뜻입니다.
StaggeredGridLayoutManage
GridLayoutManager에서 아이템의 높이를 가변적으로 설정할 수 있도록 만듭니다.
StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL)
// span의 갯수와 orientation을 넣어 생성합니다.
// 이 후 각 아이템의 높이(VERTICAL 이기에)을 가변적으로 설정 할 수 있습니다.
간단하죠? layoutManager에 있는 함수나 변수에 대한 정보는 아래 사이트에서 참조하세요.
Android Developer - LayoutManager
이에 대한 질문은 아래 댓글에 남겨주세요.
감사합니다.