個人地址
專案Github 地址
有問題可以直接留言或 聯絡QQ:1079569023
基本寫法存在問題
- 不管是ListView還是RecyclerView,大多數的基本寫法都是寫介面卡,一堆Adapter,喜歡複製貼上的內容更是混亂,非常容易出錯
- 部分功能程式碼寫在介面卡中,某些功能不能複用,冗餘度過高,免不了會複製貼上
- 如果遇到複雜的列表時候(比如聊天介面),Adapter的內容更是爆炸
- 問題就是複用性偏差,程式碼冗餘度高,可讀性不好,容易出錯.
庫能夠解決的問題
- 主要解決程式碼複用性問題,程式碼非常簡潔,基礎流程固定
- 這是一個元件化思維(類似自定義View),給定一個資料來源,元件來管理UI的展示和部分業務(避免過於複雜的業務,影響繪製效率)。
- 通用性的封裝,只有1個RecyclerAdapter介面卡,無需增加其他xxxAdapter;
- RecyclerView的展示一項Item對應一個xxxDataHolder,無需設定ViewType 任意DataHolder的組合即可完成任意複雜頁面的拼接(比如複雜的首頁,聊天介面)
專案介紹
主要是對程式碼呼叫流程和固定程式碼的封裝
庫的核心只有2個類
- RecyclerAdapter:通用的一個介面卡
- RecyclerDataHolder:通用的資料包裝類
- 還有幾個很常用的通用功能類,可以忽略
使用簡介
-
第1步:只有一個RecyclerAdapter介面卡設定給RecyclerView (程式碼固定)
-
第2步:主要程式碼就是建立ReyclerView展示的一項
xxxItemDataHolder類繼承RecyclerDataHolder的實現方法即可 (寫法固定)
xxxItemDataHolder 需要實現方法三個方法
getItemViewLayoutId: 展示的佈局id (寫法固定)
onCreateViewHolder: 設定ViewHolder,可自定義或直接new RecyclerViewHolder() (寫法固定)
onBindViewHolder: 給ViewHolder設定資料 (變化的UI展示和業務處理)
複製程式碼
- 第3步:建立資料來源 List 並設定給RecyclerAdapter即可(寫法固定)
庫中的其他幾個功能類
- RecyclerCallBack 常用事件回撥介面 (很多都在ViewHolder內部完成)
- RecyclerViewHolder 新增了幾個常用方法
- ItemSpaceDecoration 用來設定RecyclerView的行間距
- StickRecyclerAdapter 浮動標題設定
- OnPageScrollBottomListener 滾動到底部監聽
RecyclerView優化技巧
- LinearLayoutManager通過setInitialPrefetchItemCount(int num)方法設定item預載入的數量
- item 高度固定,設定setHasFixedSize(true)
- 一定要避免過於複雜的onBindViewHolder流程,簡化這裡的業務和減少new操作
程式碼已在多個專案中使用,已改版多次,目前功能穩定,抽出來遠端庫,方便複用。具體使用,可以下載程式碼,執行裡面的Demo即可。