場景再現:當我使用tabLayout + Fragment 切換不一樣的fragment時,出現了數據重複顯示的問題;java
思考邏輯:ide
- 每次切換fragment都會從新獲取數據,可是list集合是全局的,多切換兩次,list數據就會變多,因此須要加判斷,當list集合的數據超過第一次獲取下來list集合的數據的時候就clear,以後每次進入fragment的時候initView都會執行,因此也會請求數據,這時候咱們添加一個boolean來判斷;
15:56:092020-04-16this
解決方案:blog
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()方法從新獲取數據;it
``` @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(); } }
大功告成;class