優雅地刷新RecyclerView

前言

仍是那句話,RecyclerView的viewType增多,邏輯變複雜,幾個月後,你肯定還能理清思路嗎?假設咱們服務端是多個接口返回數據,你肯定能正確刷新相應type嗎?想一個RecyclerView高效快捷管理整個界面嗎?你還在使用notifyDataSetChanged無腦刷新嗎?你想單個viewType在loadingView,dataView,errorView自如切換嗎?若是你遲疑了,那你不妨試試本庫。java

特色

  • 與Adapter爲組合關係,可配合大多數Adapter
  • 一行代碼刷新相應viewType
  • 支持facebook的shimmer加載效果
  • 支持粘性頭
  • 支持異步刷新,可擴展(如配合RxAndroid)
  • 支持加載相應type錯誤頁面
  • 支持高頻率刷新(流暢,異步執行)

效果

線性排布

image

方格排布

image

關鍵字高亮

image

刷新錯誤頁面

image

高頻率刷新

image

更新內容

  • 支持刷新type錯誤頁面(可自定義)
  • 支持同時刷新多個type(異步,高頻率)
  • 鏈式註冊資源
  • 支持刷新單個數據
  • 提供helper的清除單個type,清除整個界面api
  • 提供getHeaderId的默認實現抽象類

支持刷新type錯誤頁面(可自定義)

image.png

一行代碼搞定,前者提供實體類是考慮有些用戶須要根據實體數據屬性去更新,所以錯誤頁面的layoutId是用戶提供的。android

支持同時刷新多個type(異步,高頻率)

image.png

這裏採用的是隊列的形式管理刷新,提供清空隊列的Api。api

鏈式註冊資源

image.png

因爲參數愈來愈多,這裏採用了較爲流行的鏈式註冊,內部經過ResourcesManager管理全部資源。異步

**注:**原來的註冊方式已設置爲過期,請及時更新,不出2個版本將移除。學習

支持刷新單個數據

image.png

可能某個type只有一個實體數據管理着整個type gradle

image.png

可傳T的子類集合cdn

提供helper的清除單個type,清除整個界面api

image.png

提供getHeaderId的默認實現抽象類

假設你不實現粘性頭而強制要寫getHeaderId確實挺討厭的,因爲如今android還不是很好地兼容java8,所以暫時提供DefaultMultiHeaderEntity。blog

使用注意點

type 取值範圍接口

  • level [0,+∞)
  • 數據類型 [0,1000)
  • 頭類型 [-1000,0)
  • shimmer數據類型 [-2000,-1000)
  • shimmer頭類型 [-3000,-2000)
  • error類型 [-4000,-3000)

常量差值隊列

image.png

結束

庫多多少少也更新幾個版本了,你的意見,你的建議,你的star,你的分享,一直是我前進的動力。還有一點要說的就是如今關於LayoutManager,RecyclerView,Adapter的流派不少,咱們更關注於數據的優雅刷新。

gradle依賴

image.png

PS :有興趣的加入Android工程師交流QQ羣:752016839 主要針對Android開發人員提高本身,突破瓶頸,相信你來學習,會有提高和收穫。

相關文章
相關標籤/搜索