写到关于一个天气预报App的时候遇到了这个问题,记录一下,
问题
我的App分为两个数据源,本地和线上,纯在本地和纯在线上玩是没有问题的,但是本地和线上的数据源进行切换就会出现问题,对此我查阅了一些资料,加上自己的一些理解,在这里记录一下
原因
我的ViewPage2继承与FragmentStateAdapter,而FragmentStateAdapter继承于 RecyclerView.Adapter,所以他是可以使用RecyclrView的刷新方法,为什么数据源更改之后fragment没有刷新呢,通过查看资料:
![这个方法和唯一标识进行对比
可以看到在gcFragment方法中吧新加的和原来的ItemId进行对不,如果不同就删除,但是又因为在原来的代码中ItemId就是Position,所以就导致了数据更改后没有反应,
解决
下面是我的解决办法
重写getItemI()方法和containsItem()方法,给他一个你自己创造的itemId,这样数据源更改后,发现Itemdid不同,就会把不同的删除。
这样就搞定了
附录
附上我的Github地址,上面有我的开源项目,还有与之匹配的后台,虽然有些简陋,但是当个毕业设计应该是够了,欢迎start!!!
Github:::::https://github.com/zhaojfGithub