場景再現:當我使用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(); } }
大功告成;