ViewPager动态添加Fragment

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())

直接像上面那样调用即可

动态添加 FragmentViewPager 中,需要使用 FragmentPagerAdapter 或 FragmentStatePagerAdapter。以下是添加 Fragment 的步骤: 1. 创建 FragmentPagerAdapter 或 FragmentStatePagerAdapter 的子类: ``` public class MyPagerAdapter extends FragmentPagerAdapter { private List<Fragment> mFragmentList = new ArrayList<>(); public MyPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } public void addFragment(Fragment fragment) { mFragmentList.add(fragment); notifyDataSetChanged(); } } ``` 在这个子类中,我们需要重写 getItem() 方法,返回指定位置的 Fragment 对象;重写 getCount() 方法,返回 Fragment 的数量;还需要添加一个 addFragment() 方法,用于添加 Fragment。 2. 创建 ViewPager 对象,并设置 Adapter: ``` ViewPager viewPager = findViewById(R.id.viewpager); MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(adapter); ``` 3. 创建 Fragment 对象: ``` MyFragment fragment = new MyFragment(); ``` 4. 添加 Fragment 到 Adapter: ``` adapter.addFragment(fragment); ``` 5. 刷新 Adapter: ``` adapter.notifyDataSetChanged(); ``` 这样就添加了一个 FragmentViewPager 中。如果需要替换 ViewPager 中的 Fragment,可以使用 setItem() 方法,方法参数是要替换的 Fragment 对象和位置。如果需要从 ViewPager 中移除 Fragment,可以使用 removeItem() 方法,方法参数是要移除的位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值