关于Fragment的点击切换数据滞留问题
场景再现:当我使用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(); } }
大功告成;