1. ViewPagerAdatper
1) ViewPagerAdapter
class ViewPagerAdapter(
fragmentActivity: FragmentActivity
) : FragmentStateAdapter(fragmentActivity) {
private val fragments = mutableListOf<Fragment>()
init {
fragments.apply {
}
}
override fun getItemCount(): Int {
return fragments.size
}
override fun createFragment(position: Int): Fragment {
return fragments[position]
}
}
2) ViewPager연결
mainViewpager.adapter = viewPagerAdapter
3) ViewPagerAdapter제약
3-1) 스와이프 금지
mainViewpager.run {
isUserInputEnabled = false
}
3-2) 해당 페이지까지 앱 실행 시 연결
mainViewpager.offscreenPageLimit = 2
2. navibar
1. Viewpager - naviBar 연결
mainViewpager.registerOnPageChangeCallback(
object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
mainNvMenu.menu.getItem(position).isChecked = true
}
}
)
2. Navibar 선택 이벤트
menu
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_home"
android:title="@string/menu_home"
android:icon="@drawable/ic_home"
/>
<item
android:id="@+id/menu_search"
android:title="@string/menu_search"
android:icon="@drawable/ic_search"
/>
<item
android:id="@+id/menu_profile"
android:title="@string/menu_profile"
android:icon="@drawable/ic_mypage"
/>
</menu>
2) navibar-fragment 연결
mainNvMenu.setOnItemSelectedListener { menuItem ->
when (menuItem.itemId) {
R.id.menu_home -> mainViewpager.currentItem = 0
R.id.menu_search -> mainViewpager.currentItem = 1
R.id.menu_profile -> mainViewpager.currentItem = 2
}
true
}
}
'개발노트 > android' 카테고리의 다른 글
dagger- hilt (0) | 2024.04.08 |
---|---|
안드로이드에서의 디자인 패턴(MVC/MVP/MVVM) (0) | 2024.03.27 |
Room Database (0) | 2024.01.16 |
SingleLiveEvent (0) | 2024.01.16 |
ViewModel,Repository (0) | 2024.01.16 |