ViewPager动态添加Fragment,在需要的时候才会去添加对应的Fragment。
首先创建Fragment 的适配器ViewPagerAdapter
class ViewPagerAdapter : FragmentStatePagerAdapter {
private var fragments: MutableList<Fragment> = mutableListOf()
private var context: Context
constructor(context: Context, fm: FragmentManager, fragments: List<Fragment>) : super(fm) {
this.context = context
this.fragments.addAll(fragments)
notifyDataSetChanged()
}
constructor(context: Context, fm: FragmentManager) : super(fm) {
this.context = context
notifyDataSetChanged()
}
constructor(context: Context, fm: FragmentManager,index:Int,fragment: Fragment) : super(fm) {
this.context = context
this.fragments.add(index,fragment)
notifyDataSetChanged()
}
fun addFragment(context: Context,index:Int,fragment: Fragment){
this.context = context
this.fragments.add(index,fragment)
notifyDataSetChanged()
}
override fun getItem(arg0: Int): Fragment {
return fragments[arg0]
}
override fun getItemPosition(`object`: Any): Int {
//注意:默认是PagerAdapter.POSITION_UNCHANGED,不会重新加载
return PagerAdapter.POSITION_NONE
}
override fun getCount(): Int {
return fragments.size
}
}
然后是在页面布局中创建ViewPager
<androidx.viewpager.widget.ViewPager
android:layout_marginTop="@dimen/dp_10"
android:id="@+id/mViewPager"
style="@style/MatchAuto"/>
最后就是在代码中的调用
1.初始化ViewPagerAdapter
private val pageAdapter by lazy {
ViewPagerAdapter(this@ConvertTextResultActivityAI2,supportFragmentManager,
mutableListOf()
)
}
2.使用ViewPager
mViewPager.adapter = pageAdapter
mViewPager.offscreenPageLimit = 3
mViewPager.currentItem = 0
mViewPager.isEnableScroll = true
3.在需要时添加Fragment
pageAdapter.addFragment(this,0,MyFragment())
直接像上面那样调用即可