Created
May 5, 2019 10:27
-
-
Save kevivforever/cfad534306aedc51ef5fd12dc99d74b9 to your computer and use it in GitHub Desktop.
Tablayout + Viewpager
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//with Icon in an activity | |
private fun setupViewPager() { | |
val pageAdapter = ViewPagerAdapter(supportFragmentManager) | |
user_profile_viewpager.adapter = pageAdapter | |
user_profile_tabLayout.setupWithViewPager(user_profile_viewpager) | |
user_profile_tabLayout.getTabAt(0)?.setIcon(R.drawable.ic_list_grey_24dp) | |
user_profile_tabLayout.getTabAt(1)?.setIcon(R.drawable.ic_favorite_border_grey_24dp) | |
user_profile_tabLayout.getTabAt(2)?.setIcon(R.drawable.ic_add_to_wishlist) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class PagerAdapter(fragmentManager: FragmentManager) : FragmentStatePagerAdapter(fragmentManager) { | |
// Returns total number of pages | |
override fun getCount(): Int { | |
return NUM_ITEMS | |
} | |
// Returns the fragment to display for that page | |
override fun getItem(position: Int): Fragment? { | |
when (position) { | |
0 // Fragment # 0 - This will show FirstFragment | |
-> return UserPostsFragment.newInstance() | |
1 // Fragment # 0 - This will show FirstFragment different title | |
-> return UserRecommendedFragment.newInstance() | |
2 // Fragment # 1 - This will show SecondFragment | |
-> return UserWishListFragment.newInstance() | |
else -> return null | |
} | |
} | |
// Returns the page title for the top indicator | |
//Return null if only want icon | |
override fun getPageTitle(position: Int): CharSequence? { | |
return null | |
} | |
companion object { | |
private val NUM_ITEMS = 3 | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//without Icon in a fragment | |
private fun setupViewPager() { | |
childFragmentManager.let { | |
val adapter = ViewPagerAdapter(it).apply { | |
addFrag(Fragment1(), getString(R.string.all_posts)) | |
addFrag(Fragment2.newInstance(), getString(R.string.nearby_posts)) | |
addFrag(Fragment3(), getString(R.string.following)) | |
} | |
fragment_share_viewpager.adapter = adapter | |
// by default value is 1 | |
fragment_share_viewpager.offscreenPageLimit = 2 | |
// only needed if you want to be aware of fragment curreclty being viewed | |
fragment_share_viewpager.addOnPageChangeListener(object : androidx.viewpager.widget.ViewPager.OnPageChangeListener { | |
override fun onPageScrollStateChanged(p0: Int) { | |
} | |
override fun onPageScrolled(p0: Int, p1: Float, p2: Int) { | |
} | |
override fun onPageSelected(position: Int) { | |
} | |
}) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) { | |
val mFragmentList = ArrayList<Fragment>() | |
private val mFragmentTitleList = ArrayList<String>() | |
fun addFrag(fragment: Fragment, title: String) { | |
mFragmentList.add(fragment) | |
mFragmentTitleList.add(title) | |
} | |
override fun getItem(position: Int): Fragment { | |
return mFragmentList[position] | |
} | |
override fun getCount(): Int { | |
return mFragmentList.size | |
} | |
override fun getPageTitle(position: Int): CharSequence? { | |
return mFragmentTitleList[position] | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ViewPagerAdapter
implementation is wrong. It should be just like yourFragmentStatePagerAdapter
implementation.Never store a list of Fragments inside a FragmentPagerAdapter. See https://stackoverflow.com/questions/58594982/fragment-has-not-been-attached-yet/58605339#58605339