最近在做一个项目,主要的数据页面采用的是viewpager+fragment形式展示的,在开发过程中遇到了fragment数据更新问题:项目中我有4个fragment:fragmentA、fragmentB、fragmentC、及fragmentD,在fragmentB触发点击listview任一个item中的button时需要改变fragmentB中button状态和刷新fragmentC的页面数据。
正常情况下,ViewPager会默认加载当前页和当前页的左右两页。一开始当前页是下标0,所以一开始默认加载第0页(指下标,下同)和第1页。当你向右滑动,当前页为第1页时,ViewPager会加载第2页,这时一共有3页存在(第0,1,2页)。再向右滑动,当前页为第2页时,会移除第0页,加载第3页,同理向左滑动当前页为第1页时,会移除第3页。因此fragmentB触发点击事件时并不能实时改变相关控件状态和实现数据刷新。(因为fragmentB内容是listview,且每个listview的item都有一个Button,如果使用notifydatasetchanged(),那么点击一个Button,所有的Button状态都会改变),最后不断查资料、调试和请教他人,得到了一个解决方法,自己将解决思路记录一下,方便以后自己查阅,也为跟我碰到同样类似问题的小伙伴们提供一条思路,有不对的地方或者有更好建议请留言提出,大家一块学习。。。。。。
viewpager中如何嵌套fragment以及如何实现滑动和点击fragment之间的跳转功能百度有一大堆,我就不多说了,下面切入正题.解决思路:给每一个Fragment都打上了一个标签,通过标签来寻找相应的fragment,就可以对该fragment进行更新
首先,我们在viewpager所在的java类中定义一个List<String> tagLists 来存储一下tag.(注意:因为我的viewpager的适配器java类写在了viewpager所在的java类中,所以我定义在这里。若你的适配器java类是独立封装起来的,那么就在独立封装的适配器java类中定义List<String> tagLists)。
android Viewpager中fragment的数据刷新
最新推荐文章于 2024-05-09 21:16:37 发布