본문 바로가기

나의 플랫폼/안드로이드

[Android] Set recyclerView span dynamically

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

RecyclerView를 사용할 때, GridLayoutManager를 사용하여 span을 줄 수 있습니다.

만약 GridLayout span 이 2로 하고 싶다면 아래와 같이 설정 하면 됩니ㅏㄷ.


recyclerView.setLayoutManager(new GridLayoutManager(getActivity(),2);


하지만, 만약 특정 position에서 span을 변경하고 싶을때는 어떻게 해야할 수 있을까요??

이럴땐, setSpanSizeLookup 함수를 이용하면 됩니다.


gridmanager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {

            @Override

            public int getSpanSize(int position) {

                if (position == 0) return 2;

                return 1;

            }

        });


위와 같이 사용하면 position이 0일 때는 span 2를 넘기고 나머지는 1을 넘깁니다.


span 2를 return 한다는 것은 RecyclerView에서 영역 2개를 합친다는 의미 이고,

span 1은RecyclerView 영역 1개만 사용한다는 의미 입니다.


즉, Header를 사용 하듯이 


---------------------------

               span 2

---------------------------

    span1     |  span 1

---------------------------

    span1     |  span 1

...


같이 되는 것이죠.


만약 아래와 같이 주고 싶다면


---------------------------

               span 2

---------------------------

    span1     | 

---------------------------

              span2 

---------------------------

    span1     |  span 1

...


gridmanager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                if (position == 0) return 2;
                if (position == 2) return 2;
                return 1;
            }
        });

이렇게 주면 됩니다.
참고하세요..

## 이블로그는 어디까지는 찾았던 부분을 잊지 않기 위해 올려놓은 것 입니다.

    내용이 부실해도 이해해 주시길 바랍니다.