前言:時(shí)間隔得有點(diǎn)久了鸭你,不過屈张,還是把recycleview的一些東西整理了一下。以前袱巨,遇到要求上拉下拉的或者側(cè)滑的都是直接百度阁谆,git,找已有的三方愉老。的確场绿,一些三方,還是寫得很好的嫉入。不過焰盗,發(fā)現(xiàn),沒有一個(gè)是將這兩個(gè)結(jié)合起來的咒林。所以熬拒,寫了今天這篇文章。今天這篇文章垫竞,你看過之后澎粟,以后再也不用擔(dān)心ui給你設(shè)計(jì)一個(gè)列表,既要上拉下拉欢瞪,又要側(cè)滑活烙,而且上拉下拉,還得是他設(shè)計(jì)的那樣了遣鼓。
言歸正傳瓣颅,先來講解一下思路。上拉下拉譬正,layout布局的事情宫补,側(cè)滑是item的事情。所以曾我,從一開始的設(shè)計(jì)粉怕,我們就可以明確把這兩個(gè)東西拆分開。他們將是以組合的形式抒巢,插拔式的方式贫贝,結(jié)合在一起。換言之蛉谜,可以單獨(dú)使用稚晚,也可以混合使用。ok型诚,現(xiàn)在跟著我一步步來客燕。我只講關(guān)鍵點(diǎn),和重要細(xì)節(jié)狰贯。(因?yàn)橐泊辏绻恐v,那太多了涵紊,還是大家自己在后面下載我的源碼自己看細(xì)節(jié)吧)
你可以把我這篇文章認(rèn)為是傍妒,我整合的三方框架的使用說明都可以。(ps:這部分代碼摸柄,我是kotlin和java混合寫的颤练。如果你問為什么混合寫?我只能告訴你驱负,炫技)
來先看看我的結(jié)構(gòu)吧:
如下圖嗦玖,我講recycleview上拉下拉,側(cè)滑的代碼全部單獨(dú)放到一個(gè)libary中了(如果你問什么是libary电媳,怎么創(chuàng)建踏揣,怎么引入,請自行百度匾乓,網(wǎng)絡(luò)上很多文章寫的很詳細(xì))這樣捞稿,是最大化的解耦技術(shù)代碼。
我們打開這個(gè)libary拼缝,我分了兩個(gè)包娱局,通過名字應(yīng)該就很清晰了。一個(gè)是上拉刷新下來加載咧七,一個(gè)是側(cè)滑菜單衰齐。
現(xiàn)在我們再打開看看,在基本使用中继阻,我們只需要用到下面標(biāo)注的三個(gè)類耻涛。所以废酷,在使用階段,可以不看其他類抹缕,甚至澈蟆,不看這三個(gè)類。只需要知道名字就可以了卓研。
好了趴俘,現(xiàn)在,我們開始寫代碼吧奏赘。
我們先來一個(gè)簡單的上拉下拉吧:重點(diǎn)我都標(biāo)注出來了寥闪。看到?jīng)]有一屏我就搞定了磨淌。
布局文件疲憋,我最后展示,先看代碼伦糯,理解思路柜某。
再來看看自定義上拉,下拉敛纲,其實(shí)自定義上拉下拉喂击,就是自定義頭和尾。這個(gè)也簡單:(這里淤翔,我是用java寫的翰绊,也讓大家看看java和kotlin的一些小區(qū)別吧)
我們再來看看這個(gè)自定義的header
是不是很簡單?就這樣就自定義寫完了旁壮。
好了监嗜,最后芽隆,我們再把側(cè)滑加進(jìn)來:
這里啄栓,就不貼activity的代碼了,猜猜原因撑蚌。
因?yàn)槁竽欤琣ctivity的代碼刽肠,和第一個(gè)?一毛一樣。還記得我之前說得嗎免胃,上拉下拉音五,和側(cè)滑,是解耦的羔沙。
那么側(cè)滑是加在哪里的呢?不用猜躺涝,只能是在item里面和adapter中。
ok扼雏,以上就是上拉下拉坚嗜,和側(cè)滑菜單了夯膀。主要講了關(guān)鍵點(diǎn),使用思路惶傻。對于小白來講棍郎,這些就夠花時(shí)間去熟悉了。原理和實(shí)現(xiàn)代碼银室,就大家自己慢慢花時(shí)間自己理解吧。最后励翼,附上我的源碼下載地址:https://github.com/LuckyCode1992/recycleviewsummary