欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

关于Fragment的点击切换数据滞留问题

程序员文章站 2022-07-10 20:59:05
场景再现:当我使用tabLayout + Fragment 切换不同的fragment时,出现了数据重复显示的问题; 思考逻辑: - 每次切换fragment都会重新获取数据,但是list集合是全局的,多切换两次,list数据就会变多,所以需要加判断,当list集合的数据超过第一次获取下来list集 ......

 场景再现:当我使用tablayout + fragment 切换不同的fragment时,出现了数据重复显示的问题;

 思考逻辑:

- 每次切换fragment都会重新获取数据,但是list集合是全局的,多切换两次,list数据就会变多,所以需要加判断,当list集合的数据超过第一次获取下来list集合的数据的时候就clear,之后每次进入fragment的时候initview都会执行,所以也会请求数据,这时候我们添加一个boolean来判断;
15:56:092020-04-16


解决方案:

 if (!hidden) {
if (isfirsthidden) {
size = complaintlist.size();
isfirsthidden = false;
}
if (complaintlist.size() > size) {
complaintlist.clear();
}
showrv();
}

 

- 这样写每次重新进去之后又不显示数据了
1. 定义变量 private boolean hidden;
2. this.hidden = hidden;
3. 实现onresume()方法重新获取数据;

``` @override
public void onhiddenchanged(boolean hidden) {
super.onhiddenchanged(hidden);
this.hidden = hidden;
if (!hidden) {
if (isfirsthidden) {
size = complaintlist.size();
isfirsthidden = false;
}
if (complaintlist.size() > size) {
complaintlist.clear();
}
showrv();
}
}

@override
public void onresume() {
super.onresume();
if (!hidden) {
showrv();
}
}

  

大功告成;