ViewPager2 어댑터 사용 방법

2020. 8. 12. 21:37android

먼저 viewPager2는 기존의 viewPager의 단점들을 개선해서 나온 방식입니다. 대표적인 예로는 세로모드가 지원되고notifyDataSetChaged 메서드의 문제등을 해결해서 나왔습니다.  그럼 저번 시간에 만든 Fragment를 가지고서 viewPager2를 생성해 보겠습니다.

 

1. 의존성 추가

hl=kohttps://developer.android.com/jetpack/androidx/releases/viewpager2?hl=ko

 

ViewPager2  |  Android 개발자  |  Android Developers

스와이프할 수 있는 형식으로 뷰 또는 프래그먼트를 표시합니다. 최근 업데이트 현재 안정화 출시 다음 출시 후보 베타 출시 알파 출시 2020년 4월 1일 1.0.0 - - 1.1.0-alpha01 AndroidX 종속 항목 ViewPager2�

developer.android.com

viewPager2를 사용하기 위해서 위의 구글 디밸로퍼 문서에 최신 버전이 나와있으니 이에 해당하는 버전을 의존성 추가해주시면 됩니다. 

 

2. FragmentStateAdapter

 

viewPager2는 기본적으로 화면을 슬라이드 할 수 있는 기능입니다. 때문에 넘길 수 있는 page들이 필요하고 이 page들을 생성해주는 방법으로 adapter를 사용합니다.

 

 FragmentStateAdapter를 상속받으면 기본적으로 overriding 해야하는 두가지 메서드 있기 때문에 모두 overriding 해줍니다. 메서드 이름이 직관적인 만큼 기능 또한 직관적으로 생성해 주시면 됩니다. 

 

createFragment 메서드에서 리턴하고 것은 fragment이고 newInstance 메서드를 통해서 position 값을 생성 시, 같이 만들 수 있습니다. (newInstance 메서드에 대해서는 해당 이 전편에서 소개한 'newInstance 메서드를 사용하여 fragment 만들기' 글을 읽어주시면 더 이해가 쉽습니다)

 

getItemCount 메서드는 바로 viewPager2에 붙일 page를 몇개 만들지 정하는 곳입니다. 일단 5개 정도 만들어 보겠습니다.

 

3. viewPager2에 셋팅

 

viewPager2를 선언 할 액티비티의 xml에서 viewPager2 view를 만들어줍니다.

앞으로 만들어질 page 즉, fragment들이 viewPager2를 컨테이너 삼아 안에서 생성될 것이니까 이름도 container로 지었습니다. 이후 위에서 만들어 놓은 어댑터 클래스를 viewPager2에 셋팅만 해주면 끝이 납니다.

 

mainActivity

 

fragment의 xml에서 선언한 textView의 "여기는 플래그먼트"가 제대로 보여지고 있습니다. 

 

다음은 tabLayout과 viewPager2를 연동해 보겠습니다.