[안드로이드] RecyclerView [3] Divider 구분선 넣기
[안드로이드] RecyclerView [3] Divider 구분선 넣기
( Divider 가 적용된 RecyclerView 예제, 출저 Google Material Design Guide )
RecyclerView 에서 구분선 혹은 구분자를 추가하는 방법은 다양하게 있습니다.
하지만 ListView xml 처럼 간단하게 android:divider 로 지정할 수 있는 부분이 아니라 코드적으로 구현 할 수 있습니다.
그 중 가장 간단한 방법에 대해 설명해드리겠습니다.
1. Result
구분선 (Divider) 만 넣는 방법과 구분선 + 공백 넣는 방법에 대해 설명해드리겠습니다.
2. Step by Step
2-1. 기본 구분선(Divider) 구현하기
MainActivity.java
DividerItemDecoration dividerItemDecoration =
new DividerItemDecoration(getApplicationContext(),new LinearLayoutManager(this).getOrientation());
mainBinding.recyclerView.addItemDecoration(dividerItemDecoration);
2-2. 공백 구분자 구현하기
클래스 파일을 새로 만들고 RecyclerView.ItemDecoration 을 상속받습니다.
VerticalSpaceItemDecoration.java
public class VerticalSpaceItemDecoration extends RecyclerView.ItemDecoration {
private final int verticalSpaceHeight;
public VerticalSpaceItemDecoration(int verticalSpaceHeight){
this.verticalSpaceHeight = verticalSpaceHeight;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
// 마지막 아이템이 아닌 경우, 공백 추가
if(parent.getChildAdapterPosition(view) != parent.getAdapter().getItemCount() -1 ){
outRect.bottom = verticalSpaceHeight;
}
}
}
Constructor 에서 공백의 높이를 설정해주고 getItemOffsets 메소드를 오버라이딩 하여 높이를 설정해줍니다.
이 때 마지막 아이템일 경우 공백 높이를 주지 않습니다.
이 후 기본 구분선을 구현 하는 것과 동일하게 MainActivity.java 에서 구현해줍니다.
MainActivity.java
mainBinding.recyclerView.addItemDecoration(new VerticalSpaceItemDecoration(48));
3. Soruce code
전체 소스 코드는 Github 에 연동해놨습니다.
[Recycler View 시리즈]
2017-04-28 09:00 +0900
Read other posts