【问题标题】:Can't update the Fragments in FragmentPagerAdapter无法更新 FragmentPagerAdapter 中的片段
【发布时间】:2017-12-28 04:33:00
【问题描述】:

我为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中,我有如下方法来设置view pager。

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() 将以下代码添加到适配器,但这也不起作用。

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

【问题讨论】:

  • 你可以有一个回调,然后当你收到新数据时更新你的片段列表
  • 这个问题你解决了吗?

标签: android android-fragments android-viewpager kotlin fragmentpageradapter


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多