個人地址
項(xiàng)目Github 地址
有問題可以直接留言或 聯(lián)系QQ:1079569023
基本寫法存在問題
- 不管是ListView還是RecyclerView痕惋,大多數(shù)的基本寫法都是寫適配器,一堆Adapter,喜歡復(fù)制粘貼的內(nèi)容更是混亂娃殖,非常容易出錯
- 部分功能代碼寫在適配器中值戳,某些功能不能復(fù)用,冗余度過高炉爆,免不了會復(fù)制粘貼
- 如果遇到復(fù)雜的列表時候(比如聊天界面)堕虹,Adapter的內(nèi)容更是爆炸
- 問題就是復(fù)用性偏差,代碼冗余度高芬首,可讀性不好赴捞,容易出錯.
庫能夠解決的問題
- 主要解決代碼復(fù)用性問題,代碼非常簡潔郁稍,基礎(chǔ)流程固定
- 這是一個組件化思維(類似自定義View)赦政,給定一個數(shù)據(jù)源,組件來管理UI的展示和部分業(yè)務(wù)(避免過于復(fù)雜的業(yè)務(wù),影響繪制效率)耀怜。
- 通用性的封裝恢着,只有1個RecyclerAdapter適配器,無需增加其他xxxAdapter财破;
- RecyclerView的展示一項(xiàng)Item對應(yīng)一個xxxDataHolder掰派,無需設(shè)置ViewType 任意DataHolder的組合即可完成任意復(fù)雜頁面的拼接(比如復(fù)雜的首頁,聊天界面)
項(xiàng)目介紹
主要是對代碼調(diào)用流程和固定代碼的封裝
庫的核心只有2個類
- RecyclerAdapter:通用的一個適配器
- RecyclerDataHolder:通用的數(shù)據(jù)包裝類
- 還有幾個很常用的通用功能類,可以忽略
使用簡介
第1步:只有一個RecyclerAdapter適配器設(shè)置給RecyclerView (代碼固定)
第2步:主要代碼就是創(chuàng)建ReyclerView展示的一項(xiàng)
xxxItemDataHolder類繼承RecyclerDataHolder的實(shí)現(xiàn)方法即可 (寫法固定)
xxxItemDataHolder 需要實(shí)現(xiàn)方法三個方法
getItemViewLayoutId: 展示的布局id (寫法固定)
onCreateViewHolder: 設(shè)置ViewHolder,可自定義或直接new RecyclerViewHolder() (寫法固定)
onBindViewHolder: 給ViewHolder設(shè)置數(shù)據(jù) (變化的UI展示和業(yè)務(wù)處理)
- 第3步:創(chuàng)建數(shù)據(jù)源 List<xxxItemDataHolder> 并設(shè)置給RecyclerAdapter即可(寫法固定)
庫中的其他幾個功能類
- RecyclerCallBack 常用事件回調(diào)接口 (很多都在ViewHolder內(nèi)部完成)
- RecyclerViewHolder 添加了幾個常用方法
- ItemSpaceDecoration 用來設(shè)置RecyclerView的行間距
- StickRecyclerAdapter 浮動標(biāo)題設(shè)置
- OnPageScrollBottomListener 滾動到底部監(jiān)聽
RecyclerView優(yōu)化技巧
- LinearLayoutManager通過setInitialPrefetchItemCount(int num)方法設(shè)置item預(yù)加載的數(shù)量
- item 高度固定,設(shè)置setHasFixedSize(true)
- 一定要避免過于復(fù)雜的onBindViewHolder流程左痢,簡化這里的業(yè)務(wù)和減少new操作
代碼已在多個項(xiàng)目中使用靡羡,已改版多次系洛,目前功能穩(wěn)定,抽出來遠(yuǎn)程庫亿眠,方便復(fù)用碎罚。具體使用,可以下載代碼纳像,運(yùn)行里面的Demo即可荆烈。