RecyclerView를 사용하는 가장 기본적인 구성은 옆과 같이 가로나 세로로 1열로 정렬하는 형태일 것이다. (LinearLayoutManager)
구현 의도에 따라 필요에 따라 열(Row)마다 차지하는 Column 갯수가 다르게 해야 하는 경우가 있다.
이처럼 차지하는 Column 갯수가 다르게 하고 싶을때 GridLayoutManager의 SpanSizeLookup함수를 사용한다
아래코드는 화면 값을 구해 특정 영역을 뺀 값을 계산 후
Adapter 내에서 data를 통해 position 값으로 return 하는 값을 분기하여 받아 온 후 spansize를 구해 지정해 주는 코드
val currentWidth = getDeviceWidth(context) - (mActivity.resources.getDimensionPixelSize(R.dimen.common_20dp) * 2)
val spanCount = currentWidth / cardViewWidth
parentRecyclerView?.layoutManager = GridLayoutManager(mActivity, spanCount, GridLayoutManager.VERTICAL, false).apply {
spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
return when (parentAdapter?.getItemViewType(position)) { //어댑터에 getItemViewType 함수에서 return되는 숫자 사용( 주로 어댑터에 들어오는 데이터를 구분해 분기)
0 -> spanCount
else -> 1
}
}
}
}
이 처럼 RecyclerView에 GridLayoutManager의 SpanSize를 사용하면 Device 마다 Content 영역 갯수를 다르게 줄 수 있다.
'Android > Reference' 카테고리의 다른 글
화면켜짐/제어 (WakeLock, WindowFlag) (0) | 2021.11.24 |
---|---|
Indicator (인디케이터) 실습 (0) | 2021.03.29 |
Android 현재/과거 날짜 시간 구하기 (SimpleDataFormat) (0) | 2021.03.04 |
Floating Action Button (플로팅 액션 버튼) (2) | 2021.01.04 |
RecyclerView 화면깜빡임 현상 방지 (ItemAnimator) (0) | 2020.12.16 |