关于ViewPage2的数据刷新问题

写到关于一个天气预报App的时候遇到了这个问题,记录一下,

问题

我的App分为两个数据源,本地和线上,纯在本地和纯在线上玩是没有问题的,但是本地和线上的数据源进行切换就会出现问题,对此我查阅了一些资料,加上自己的一些理解,在这里记录一下

原因

我的ViewPage2继承与FragmentStateAdapter,而FragmentStateAdapter继承于 RecyclerView.Adapter,所以他是可以使用RecyclrView的刷新方法,为什么数据源更改之后fragment没有刷新呢,通过查看资料:

这个方法获取了唯一标识

![这个方法和唯一标识进行对比](https://img-blog.csdnimg.cn/2021033110501667.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzgwMDUy,size_16,color_FFFFFF,t_70#pic_center)

在这里插入图片描述

可以看到在gcFragment方法中吧新加的和原来的ItemId进行对不,如果不同就删除,但是又因为在原来的代码中ItemId就是Position,所以就导致了数据更改后没有反应,

解决

下面是我的解决办法
重写getItemI()方法和containsItem()方法,给他一个你自己创造的itemId,这样数据源更改后,发现Itemdid不同,就会把不同的删除。在这里插入图片描述
在这里插入图片描述这样就搞定了

附录

附上我的Github地址,上面有我的开源项目,还有与之匹配的后台,虽然有些简陋,但是当个毕业设计应该是够了,欢迎start!!!
Github:::::https://github.com/zhaojfGithub

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值