【发布时间】: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