前言#
安利一個(gè)非常強(qiáng)大的框架向叉。 通常簡(jiǎn)化我們的復(fù)雜列表(例如聊天,朋友圈)嗦董,都是通過(guò)封裝adapter母谎,或者重寫(xiě)RecyclerView控件,但是今天這個(gè)框架MultiType 展懈,這一切都改變了。
截取官網(wǎng)的一句話:
再來(lái)一張圖:
基本用法#
我寫(xiě)了一個(gè)簡(jiǎn)單的例子 來(lái)演示 MultiType 的基本用法供璧。樣式來(lái)自于MaterialHome
-
gif
以下整個(gè)界面就是采用recyclerView + MultiType 完成的
-
講解
1.靜態(tài)插圖:
2.首先讓你的數(shù)據(jù)類實(shí)現(xiàn) MultiType 提供的 Item存崖,代碼片段:
3.整個(gè)界面分為四層(基礎(chǔ)信息,簡(jiǎn)介睡毒,評(píng)論来惧,推薦叢書(shū)(一個(gè)可橫向滾動(dòng)的布 局))
,從整個(gè)布局來(lái)看演顾,首先你一定先想到在adapter中定義四個(gè)類型供搀,接著重寫(xiě) getItemViewType(),然后在getItemCount()中判斷返回?cái)?shù)據(jù)size钠至,還要再 onCreateViewHolder()中判斷加載哪一個(gè)view等一系列復(fù)雜的代碼....
然而葛虐,使用MultiType,只需要往你的數(shù)據(jù)集合中add數(shù)據(jù)棉钧,并且注冊(cè)屿脐,即可!
代碼片段:
2.對(duì)于注冊(cè)是非常關(guān)鍵的一句代碼,注冊(cè)分為兩種方式的诵。一種全局注冊(cè)万栅,一種局部注冊(cè)。
我采用的就是局部注冊(cè)西疤,而全局注冊(cè)主要是讓一些普適性的類型能夠全局共用烦粒,例如下拉刷新,上拉加載更多等代赁,當(dāng)然扰她,你也可以使用局部注冊(cè)。
全局注冊(cè)用法請(qǐng)去官方文檔 查看或者看我的例子
3.每一種類型也對(duì)應(yīng)一個(gè)Provider管跺,繼承MultiType提供的ItemViewProvider义黎,類似原生的RecyclerViewAdapter。實(shí)例代碼:
4.其它和adapter的原始寫(xiě)法一樣豁跑,notifyDataSetChanged廉涕,notifyItemRemoved,notifyItemInserted等艇拍。
-
總結(jié)
MultiType是一個(gè)非常強(qiáng)大的框架狐蜕,這里我只是簡(jiǎn)單的表述它使用起來(lái)真的很輕巧,并且只是使用了一點(diǎn)皮毛卸夕,只有通過(guò)真正的實(shí)踐才能理解其中的奧妙层释。希望后續(xù)能深入源碼來(lái)理解,如果有什么建議或者需要討論的可以直接留言快集。
還有贡羔,MultiType的作者 真的很友善,haha