class ViewPagerAdapter (fragment : FragmentActivity) : FragmentStateAdapter(fragment){
override fun getItemCount(): Int = 3
override fun createFragment(position: Int): Fragment {
return when (position) {
0 -> Fragment1()
1 -> Fragment2()
else -> Fragment3()
}
}
}
FragmentStateAdapter를 상속받는 뷰페이저 어댑터를 생성해준다.
getItemCount는 현재 아이템의 개수를 반환하고
createFragment는 선택된 위치의 프래그먼트로 전환해준다.
메인 액티비티
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// 탭 설정
binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener{
override fun onTabSelected(tab: TabLayout.Tab?) {
// 탭이 선택 되었을 때
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
// 탭이 선택되지 않은 상태로 변경 되었을 때
}
override fun onTabReselected(tab: TabLayout.Tab?) {
// 이미 선택된 탭이 다시 선택 되었을 때
}
})
// 뷰페이저에 어댑터 연결
binding.pager.adapter = ViewPagerAdapter(this)
/* 탭과 뷰페이저를 연결, 여기서 새로운 탭을 다시 만드므로 레이아웃에서 꾸미지말고
여기서 꾸며야함
*/
TabLayoutMediator(binding.tabLayout, binding.pager) {tab, position ->
when(position) {
0 -> tab.text = "탭1"
1 -> tab.text = "탭2"
2 -> tab.text = "탭3"
}
}.attach()
}
}