본문 바로가기
개발노트/android

ViewPagerAdapter,navibar

by 시계속세상은아직돌아가는중 2024. 1. 16.

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