有問題能夠直接留言或 聯繫QQ:1079569023git
基本寫法存在問題
- 無論是ListView仍是RecyclerView,大多數的基本寫法都是寫適配器,一堆Adapter,喜歡複製粘貼的內容更是混亂,很是容易出錯
- 部分功能代碼寫在適配器中,某些功能不能複用,冗餘度太高,免不了會複製粘貼
- 若是遇到複雜的列表時候(好比聊天界面),Adapter的內容更是爆炸
- 問題就是複用性誤差,代碼冗餘度高,可讀性很差,容易出錯.
庫可以解決的問題
- 主要解決代碼複用性問題,代碼很是簡潔,基礎流程固定
- 這是一個組件化思惟(相似自定義View),給定一個數據源,組件來管理UI的展現和部分業務(避免過於複雜的業務,影響繪製效率)。
- 通用性的封裝,只有1個RecyclerAdapter適配器,無需增長其餘xxxAdapter;
- RecyclerView的展現一項Item對應一個xxxDataHolder,無需設置ViewType 任意DataHolder的組合便可完成任意複雜頁面的拼接(好比複雜的首頁,聊天界面)
項目介紹
主要是對代碼調用流程和固定代碼的封裝github
庫的核心只有2個類bash
- RecyclerAdapter:通用的一個適配器
- RecyclerDataHolder:通用的數據包裝類
- 還有幾個很經常使用的通用功能類,能夠忽略
使用簡介組件化
-
第1步:只有一個RecyclerAdapter適配器設置給RecyclerView (代碼固定)佈局
-
第2步:主要代碼就是建立ReyclerView展現的一項fetch
xxxItemDataHolder類繼承RecyclerDataHolder的實現方法便可 (寫法固定)
xxxItemDataHolder 須要實現方法三個方法
getItemViewLayoutId: 展現的佈局id (寫法固定)
onCreateViewHolder: 設置ViewHolder,可自定義或直接new RecyclerViewHolder() (寫法固定)
onBindViewHolder: 給ViewHolder設置數據 (變化的UI展現和業務處理)
複製代碼
- 第3步:建立數據源 List 並設置給RecyclerAdapter便可(寫法固定)
庫中的其餘幾個功能類優化
- RecyclerCallBack 經常使用事件回調接口 (不少都在ViewHolder內部完成)
- RecyclerViewHolder 添加了幾個經常使用方法
- ItemSpaceDecoration 用來設置RecyclerView的行間距
- StickRecyclerAdapter 浮動標題設置
- OnPageScrollBottomListener 滾動到底部監聽
RecyclerView優化技巧spa
- LinearLayoutManager經過setInitialPrefetchItemCount(int num)方法設置item預加載的數量
- item 高度固定,設置setHasFixedSize(true)
- 必定要避免過於複雜的onBindViewHolder流程,簡化這裏的業務和減小new操做
代碼已在多個項目中使用,已改版屢次,目前功能穩定,抽出來遠程庫,方便複用。具體使用,能夠下載代碼,運行裏面的Demo便可。code