본문 바로가기

안드로이드

Set recyclerView span dynamically

출처 | http://gogorchg.tistory.com/entry/Android-androidsupportv4appfragmentgetallowreturntransitionoverlap


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;
            }
        });

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


'안드로이드' 카테고리의 다른 글

loading bar custom  (0) 2016.05.24
Glide Transformations - 이미지 변형  (0) 2016.05.17
[펌]glide  (0) 2016.04.26
[펌]ButterKnife Library  (0) 2016.04.26
[펌]Android Image Loader  (0) 2016.04.26