[안드로이드] 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 시리즈]

  1. [안드로이드] RecyclerView [1] 간단한 사용법
  2. [안드로이드] RecyclerView [2] OnItemClick 리스너 구현
  3. [안드로이드] RecyclerView [3] Divider 구분선 넣기