无法更新FragmentPagerAdapter中的片段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法更新FragmentPagerAdapter中的片段相关的知识,希望对你有一定的参考价值。

我为FragmentPagerAdapter编写了以下代码来设置ViewPager。

class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) {

    private val mFragmentList = ArrayList<Fragment>()
    private val mFragmentTitleList = ArrayList<String>()

    override fun getItem(position: Int): Fragment = mFragmentList[position]

    override fun getCount(): Int = mFragmentList.size

    fun addFragment(fragment: Fragment, title: String) {
        mFragmentList.add(fragment)
        mFragmentTitleList.add(title)
    }

    fun addFragment(fragment: Fragment) {
        mFragmentList.add(fragment)
    }

    override fun getPageTitle(position: Int): CharSequence = mFragmentTitleList[position]

}

在Activity中,我有以下方法来设置视图寻呼机。

private fun setupViewPager(viewPager: ViewPager, dataList: List<CholesterolMonthlySummary>) {
    Log.i(TAG, "Size of the dataList passing through setupViewPager is ${dataList.size}")

    val adapter = ViewPagerAdapter(supportFragmentManager)
    adapter.addFragment(CholesterolPagingFragment.newInstance(ArrayList(dataList), CHOL))
    adapter.addFragment(CholesterolPagingFragment.newInstance(ArrayList(dataList), LDL))
    adapter.addFragment(CholesterolPagingFragment.newInstance(ArrayList(dataList), HDL))
    adapter.addFragment(CholesterolPagingFragment.newInstance(ArrayList(dataList), TRIG))
    viewPager.adapter = adapter

}

当新的数据集进来时,我再次调用上面的方法并再次更改适配器,但我已经实例化的视图不会更新。仅更新未实例化的视图。

我甚至尝试过notifyDataSetChange()将以下代码添加到Adapter,但这也行不通。

override fun getItemPosition(`object`: Any?): Int = FragmentPagerAdapter.POSITION_NONE
答案

当您想要更新视图时,可以尝试直接调用adapter.notifyDataSetChanged()

也许你需要在插入新数据之前清除mFragmentListmFragmentTitleList

以上是关于无法更新FragmentPagerAdapter中的片段的主要内容,如果未能解决你的问题,请参考以下文章

FragmentPagerAdapter 带有 ViewPager 和两个 Fragment。从第二个转到第一个并更新第一个的文本

Android获取FragmentPagerAdapter中的片段

FragmentpagerAdapter和FragmentStatePagerAdapter的区别

android自定义view怎么使用fragmentpageradapter

FragmentPagerAdapter动态添加fragment和删除fragment

滑动时 ViewPager 更新片段