每次使用RecyclerView是不是很麻煩普泡,好幾個(gè)方法重寫,還有ViewHolder奸忽,那么就自己封裝一個(gè)吧嗜浮。
使用別人第三方得庫,是不是不方便加載更多得ui樣式突硝,那么我們就支持自定義加載更多得ui布局吧,使用簡(jiǎn)單。
需要源碼可以私聊我嚼摩。打包發(fā)你
1封裝CommonAdapter
1.1需求
我想添加100個(gè)頭和100個(gè)尾布局
我想每次使用recyclerView非常簡(jiǎn)單
1.2開始搬磚
? ? 通用CommonHolder這里就不說了。
? ? 1.2.1 抽象,提供布局
????public abstract class CommonAdapter<T>?extends RecyclerView.Adapter {
? ??????protected abstract int layoutId();//布局資源
????}
? ? 1.2.2提供添加頭和尾布局
????????private? ArrayMap<Integer, View>? headerViews = new ArrayMap<>();
????????private? ArrayMap<Integer, View>? ?footerViews = new ArrayMap<>();
? ? ? ? 1.2.3重寫方法
? 提供抽象方法設(shè)置數(shù)據(jù)? ?protected abstract void convert(CommonHolder viewHolder,int position,T t);????
1.3來吧展示
? ? ? ? ? ? 是不是很簡(jiǎn)單枕面,傳入list數(shù)據(jù)愿卒。
????????????添加頭部和尾View,隨便添加,不客氣
1.4GridLayoutManager處理頭和尾
我用得是GridLayoutManager,每行展示兩個(gè)數(shù)據(jù)潮秘,我想要添加得頭部占整個(gè)RecyclerView得寬度琼开。
2封裝CommonLoadMoreAdapter
2.1需求
我想要實(shí)現(xiàn)上拉加載更多
2.2開始搬磚
? ? ? ? 首先繼承CommonAdapter,也就繼承了CommonAdapter得使用簡(jiǎn)單枕荞,和無限添加headView和footView
?2.2.1定義三個(gè)狀態(tài)
2.2.2定義加載更多得布局
? ? ok ,現(xiàn)在可以隨意自定義加載更多得布局樣式了柜候。
2.2.3重寫onAttachedToRecyclerView
????????添加滑動(dòng)監(jiān)聽,顯示完最后一個(gè)如果允許加載更多躏精,并且數(shù)據(jù)沒有加載完渣刷,并且當(dāng)前沒有正在刷新,也不是正在加載更多矗烛,則回調(diào)loadmore
? 這里得gestureState==TOTOP表示手勢(shì)向上滑動(dòng)一定得距離辅柴。
? ?由于滑動(dòng)監(jiān)聽中,onScrollStateChanged先回調(diào)高诺,然后再onScrolled碌识。有這種情況,當(dāng)前recyclerView得數(shù)據(jù)展示沒有超過屏幕虱而,比如只有半屏筏餐,這時(shí)候應(yīng)該是滑不動(dòng),dy一直是0牡拇,無法知道手勢(shì)是上滑還是下拉魁瞪,我用了一個(gè)不太好得方案。recyclerView.setOnTouchListener()中判斷手勢(shì)方向惠呼。解決上拉刷新和加載更多得沖突导俘。歡迎討論,和指出問題
不過一般做分頁得如果能加載更多得話剔蹋,一般一頁是超過屏幕得高度滴旅薄,要么就是只有一頁數(shù)據(jù),設(shè)置不允許加載更多就好泣崩,這個(gè)是我自己設(shè)置了兩條數(shù)據(jù)少梁,還能加載更多,也需要刷新矫付,出現(xiàn)得問題凯沪,然后這樣解決得。
這里暫時(shí)只支持SwipeRefreshLayout刷新买优,因?yàn)榈谝淮螌懛谅恚行┎煌晟仆伲罄m(xù)優(yōu)化。烘跺。湘纵。
2.3來吧展示
加載完畢之后調(diào)用loadAllOver(),未加載完調(diào)用loadDataComplete()
3封裝CommonMutilAdapter
3.1需求
不想努力了,我要簡(jiǎn)單液荸,多布局比單一布局得RecyclerView.Adapter寫還麻煩
繼承CommonLoadMoreAdapter
提供添加多布局方法
3.2來吧展示
? ? ? 是不是使用很簡(jiǎn)單
很少寫文章瞻佛,剛好空閑出一點(diǎn)時(shí)間來,才寫得娇钱,時(shí)間也不多伤柄,歡迎討論
如果需要得直接私信我就行,交個(gè)朋友文搂。