簡潔/易用/靈活/高效->RecyclerView適配器封裝

我的地址

項目Github 地址

有問題能夠直接留言或 聯繫QQ:1079569023git


基本寫法存在問題

  1. 無論是ListView仍是RecyclerView,大多數的基本寫法都是寫適配器,一堆Adapter,喜歡複製粘貼的內容更是混亂,很是容易出錯
  2. 部分功能代碼寫在適配器中,某些功能不能複用,冗餘度太高,免不了會複製粘貼
  3. 若是遇到複雜的列表時候(好比聊天界面),Adapter的內容更是爆炸
  4. 問題就是複用性誤差,代碼冗餘度高,可讀性很差,容易出錯.

庫可以解決的問題

  1. 主要解決代碼複用性問題,代碼很是簡潔,基礎流程固定
  2. 這是一個組件化思惟(相似自定義View),給定一個數據源,組件來管理UI的展現和部分業務(避免過於複雜的業務,影響繪製效率)。
  3. 通用性的封裝,只有1個RecyclerAdapter適配器,無需增長其餘xxxAdapter;
  4. RecyclerView的展現一項Item對應一個xxxDataHolder,無需設置ViewType 任意DataHolder的組合便可完成任意複雜頁面的拼接(好比複雜的首頁,聊天界面)

項目介紹

主要是對代碼調用流程和固定代碼的封裝github

庫的核心只有2個類bash

  1. RecyclerAdapter:通用的一個適配器
  2. RecyclerDataHolder:通用的數據包裝類
  3. 還有幾個很經常使用的通用功能類,能夠忽略

使用簡介組件化

  1. 第1步:只有一個RecyclerAdapter適配器設置給RecyclerView (代碼固定)佈局

  2. 第2步:主要代碼就是建立ReyclerView展現的一項fetch

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優化技巧spa

  1. LinearLayoutManager經過setInitialPrefetchItemCount(int num)方法設置item預加載的數量
  2. item 高度固定,設置setHasFixedSize(true)
  3. 必定要避免過於複雜的onBindViewHolder流程,簡化這裏的業務和減小new操做

代碼已在多個項目中使用,已改版屢次,目前功能穩定,抽出來遠程庫,方便複用。具體使用,能夠下載代碼,運行裏面的Demo便可。code

相關文章
相關標籤/搜索