Не удается обновить фрагменты в 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

1 ответ

Вы можете попробовать позвонить adapter.notifyDataSetChanged() непосредственно, когда вы хотите обновить вид.

И, возможно, вам нужно очистить mFragmentList а также mFragmentTitleList перед тем как вставить новые данные?

Другие вопросы по тегам