RecyclerView 無法刷新,滑動螢幕才會更新數據、內容

Quarter Life
2 min readOct 4, 2020

--

RecyclerView無法更新_滑動螢幕才會刷新_RecyclerView_can_not_update
Photo by Thought Catalog on Unsplash

🔖 問題描述
要更新 Fragment (ViewPager) 中的 RecyclerView 的內容,卻無法正常顯示。畫面會顯示先前的舊內容,或是黑畫面。直到手指觸碰螢幕,上下滑動、拖動後,正確的內容才會出現、刷新。

🔖 疑惑
1. 調用 adapter.notifyDataSetChanged(); 的指令,卻沒有作用。
2. Logcat 打印有抓到新的數據,但卻無法進入、進不去 Adapter 的 class 裡,導致 Adapter 中的程式無法運作 → 造成 RecyclerView 無法正常更新。

🔖 排除其他原因
1. 嘗試過每次都重新 new 一個新的 Adapter,也不行。
→ 排除是 RecyclerView 和 Adapter 配對不上的問題。
2. 也確認過更新 UI 的指令是下在主線程裡。
→ 排除更新 UI 的指令若是下在非主線程裡會無法更新的問題。

🔖 解決方法
後來在網路上查了很久的資料,才看到一篇文章,推測由於內存消耗過大,可能 Fragment 的 View 被回收了。因此只要在切換 Fragment (ViewPager) 後,在該 Fragment 的可視狀態改變(從【不可見 → 可見】)的 function 裡,調用:

getview().requestLayout();

重新向 Fragment 請求布局,進行重繪,
RecyclerView 的內容、數據就可以正常顯示並更新了。

👀💬 如果這篇文章有幫助到你,不妨拍個手或留個言支持我一下👏
你的支持,是我最大的創作動力 ///🙈///💕

--

--

Quarter Life

混血工程師 X 每天 15 分鐘 X 學習輸出日誌