Skip to main content

How to implement a fragment pager adapter in Kotlin Android

How to implement a fragment pager adapter in Kotlin Android.

Here is a step-by-step tutorial on how to implement a FragmentPagerAdapter in Kotlin for Android:

Step 1: Set up your project Create a new Android project in Android Studio and make sure you have the necessary dependencies added to your build.gradle file. You will need the com.android.support:appcompat and com.android.support:design libraries.

Step 2: Create your Fragments Create the fragments that you want to display in your ViewPager. Each fragment will represent a separate page. You can create a new Kotlin class for each fragment and extend the Fragment class.

Example:

class FragmentOne : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_one, container, false)
}
}

class FragmentTwo : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_two, container, false)
}
}

Step 3: Create the FragmentPagerAdapter Create a new Kotlin class for your FragmentPagerAdapter and extend the FragmentPagerAdapter class. In the constructor, pass the FragmentManager as a parameter.

Example:

class MyPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) {
override fun getItem(position: Int): Fragment {
return when (position) {
0 -> FragmentOne()
1 -> FragmentTwo()
else -> FragmentOne()
}
}

override fun getCount(): Int {
return 2 // Return the number of pages
}

override fun getPageTitle(position: Int): CharSequence? {
return when (position) {
0 -> "Page 1"
1 -> "Page 2"
else -> null
}
}
}

Step 4: Set up the ViewPager in your activity In your activity's layout XML file, add a ViewPager element to hold the fragments. Also, add a TabLayout element to display the tabs.

Example:

<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_anchor="@id/viewPager"
app:layout_anchorGravity="bottom"
app:tabMode="fixed" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

In your activity class, find the ViewPager and TabLayout by their IDs and set up the adapter.

Example:

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val viewPager: ViewPager = findViewById(R.id.viewPager)
val tabLayout: TabLayout = findViewById(R.id.tabLayout)

val adapter = MyPagerAdapter(supportFragmentManager)
viewPager.adapter = adapter

tabLayout.setupWithViewPager(viewPager)
}
}

Step 5: Run your app Build and run your app on an emulator or a physical device. You should now see the ViewPager with the fragments displayed as pages, and the TabLayout showing the corresponding tabs.

That's it! You have successfully implemented a FragmentPagerAdapter in Kotlin for Android. You can add more fragments and customize the adapter according to your needs.