FragmentPagerAdapter.notifyDataSetChanged失效详解

当使用FragmentPagerAdapter时,动态更改数据并调用notifyDataSetChanged()可能会遇到无响应的情况。这是因为ViewPager会缓存Fragment,即使数据改变,仍可能显示旧的Fragment。解决办法是在PagerAdapter中清除Fragment缓存,例如在AppCompatActivity的onResume()方法中执行清理操作,从而确保显示最新的内容。深入理解源码有助于找出这类问题的根源。

背景

项目中用到Viewpager+FragmentPagerAdapter管理若干Fragment,我的fragments是根据服务返回的json动态生成的,当我的fragments发生变化时,本想通过

fragments.clear();//清除旧的fragment
fragments.add(……);//添加新的
FragmentPagerAdapter.notifyDataSetChanged

来替换原来的fragments,但是结果是,并无反应,还是原来的fragments

网上关于这一块,解决方案很多,特别是说在FragmentPagerAdapter中重写getItemPosition强制返回POSITION_NONE的:

@Override
public int getItemPosition(Object object) { 
    return POSITION_NONE; 
} 

这些我都已经处理过了,但是还是会出现这种情况。

根据以往的经验,还是看一

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值