簡潔/易用/靈活/高效->RecyclerView介面卡封裝

Sum_sdl發表於2018-11-16

個人地址

專案Github 地址

有問題可以直接留言或 聯絡QQ:1079569023


基本寫法存在問題

  1. 不管是ListView還是RecyclerView,大多數的基本寫法都是寫介面卡,一堆Adapter,喜歡複製貼上的內容更是混亂,非常容易出錯
  2. 部分功能程式碼寫在介面卡中,某些功能不能複用,冗餘度過高,免不了會複製貼上
  3. 如果遇到複雜的列表時候(比如聊天介面),Adapter的內容更是爆炸
  4. 問題就是複用性偏差,程式碼冗餘度高,可讀性不好,容易出錯.

庫能夠解決的問題

  1. 主要解決程式碼複用性問題,程式碼非常簡潔,基礎流程固定
  2. 這是一個元件化思維(類似自定義View),給定一個資料來源,元件來管理UI的展示和部分業務(避免過於複雜的業務,影響繪製效率)。
  3. 通用性的封裝,只有1個RecyclerAdapter介面卡,無需增加其他xxxAdapter;
  4. RecyclerView的展示一項Item對應一個xxxDataHolder,無需設定ViewType 任意DataHolder的組合即可完成任意複雜頁面的拼接(比如複雜的首頁,聊天介面)

專案介紹

主要是對程式碼呼叫流程和固定程式碼的封裝

庫的核心只有2個類

  1. RecyclerAdapter:通用的一個介面卡
  2. RecyclerDataHolder:通用的資料包裝類
  3. 還有幾個很常用的通用功能類,可以忽略

使用簡介

  1. 第1步:只有一個RecyclerAdapter介面卡設定給RecyclerView (程式碼固定)

  2. 第2步:主要程式碼就是建立ReyclerView展示的一項

 xxxItemDataHolder類繼承RecyclerDataHolder的實現方法即可 (寫法固定)
 xxxItemDataHolder 需要實現方法三個方法 
 
 getItemViewLayoutId: 展示的佈局id (寫法固定)
 onCreateViewHolder: 設定ViewHolder,可自定義或直接new RecyclerViewHolder() (寫法固定)
 onBindViewHolder: 給ViewHolder設定資料 (變化的UI展示和業務處理)
複製程式碼
  1. 第3步:建立資料來源 List 並設定給RecyclerAdapter即可(寫法固定)

庫中的其他幾個功能類

  1. RecyclerCallBack 常用事件回撥介面 (很多都在ViewHolder內部完成)
  2. RecyclerViewHolder 新增了幾個常用方法
  3. ItemSpaceDecoration 用來設定RecyclerView的行間距
  4. StickRecyclerAdapter 浮動標題設定
  5. OnPageScrollBottomListener 滾動到底部監聽

RecyclerView優化技巧

  1. LinearLayoutManager通過setInitialPrefetchItemCount(int num)方法設定item預載入的數量
  2. item 高度固定,設定setHasFixedSize(true)
  3. 一定要避免過於複雜的onBindViewHolder流程,簡化這裡的業務和減少new操作

程式碼已在多個專案中使用,已改版多次,目前功能穩定,抽出來遠端庫,方便複用。具體使用,可以下載程式碼,執行裡面的Demo即可。

相關文章