android - 无法更新 FragmentPagerAdapter 中的 fragment

标签 android android-fragments android-viewpager kotlin 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 中,我有以下方法来设置 View 寻呼机。

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

}

当新数据集进来时,我再次调用上述方法并再次更改适配器,但我已经实例化的 View 没有得到更新。只有未实例化的 View 才会更新。

我什至尝试过 notifyDataSetChange() 将以下代码添加到 Adapter,但这也不起作用。

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

最佳答案

当你想更新 View 时,你可以尝试直接调用adapter.notifyDataSetChanged()

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

关于android - 无法更新 FragmentPagerAdapter 中的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48001611/

相关文章:

java - 显示当前日期时出错

android - Auth 1.0 oauth_signature 创建 Android for magento API

android - 延迟弹出对话框 fragment ,直到其中的 webview 完成加载

java - 从上面的 Activity 调用 viewpager 的 asynctask

android - Imageview 和 PagerAdapter

java - 如何从不同的 fragment 访问房间数据库?

Android和IOS游戏引擎

android - 使用 ViewPager 从父 Activity 调用 Fragment 的方法

android - 如何禁用 View 页面中的预加载?

android - 在viewpager android中发送到新的另一个 Activity