? ? ? ?現(xiàn)在Android技術(shù)要求越來(lái)越高了盛正,本人決定把學(xué)習(xí)的知識(shí)記在簡(jiǎn)書上,一來(lái)可以記錄自己的學(xué)習(xí)歷程屑埋,二來(lái)也可以更好的理清思路豪筝,理解原理。 ?
? ? ? 今天要寫的是如何給recyclerview添加頭部和底部摘能,Android5.0后谷歌用recyclerview替代了原先的listview,但是沒(méi)有添加頭部和底部的方法续崖,分析listview的源碼,找到設(shè)置adapter的方法,如下圖:
? ? ? 我們關(guān)注上面的紅色部分团搞,可以看到如果用戶設(shè)置了頭部和底部严望,那么就對(duì)用戶的adapter進(jìn)行重新包裝,設(shè)置一個(gè)新的adapter逻恐,HeaderViewListAdapter,讓其去處理視圖的顯示邏輯像吻,如果用戶沒(méi)有設(shè)置則用原來(lái)的adapter峻黍,我們?cè)倏磍istView添加頭部的代碼:
這里講頭部視圖添加進(jìn)來(lái),傳入新的adapter拨匆。我們?cè)倏碒eaderViewListAdapter類主要關(guān)注構(gòu)造方法和getView姆涩,getViewType方法:
構(gòu)造方法:
構(gòu)造方法里面主要是對(duì)頭部和底部視圖容器進(jìn)行初始化
getViewType方法:
? ? ? ?這個(gè)方法里面主要是處理了不同的視圖,返回不同的viewtype常量惭每,然后在getView方法里面渲染出來(lái)阵面。
getView方法:
在getview方法中,分別處理了頭部和底部以及其他視圖洪鸭。
分析完了listview的源碼,那么我們模仿著給recyclerview添加頭部和底部,項(xiàng)目結(jié)構(gòu)如下圖:
主要是兩個(gè)類仑扑,一個(gè)HeaderViewRecyclerAdapter,一個(gè)是WrapRecyclerView
HeaderViewRecyclerAdapter主要是繼承recyclerview的adapter重新封裝览爵。
WrapRecyclerView主要是繼承recyclerView添加頭部和底部,以及設(shè)置adapter的邏輯處理镇饮。對(duì)recyclerview二次封裝蜓竹。
HeaderViewRecyclerAdapter中的主要方法:
onBindViewHolder,根據(jù)不同情況綁定不同的viewholder
getItemViewType方法储藐,返回不同視圖的常量type
onCreateViewHolder方法里面根據(jù)不同的viewType返回不同的holder
上圖是WrapRecyclerView的主要方法俱济,仿listview源碼添加頭發(fā)和底部,設(shè)置adapter钙勃。
運(yùn)行效果圖:
源碼地址:http://download.csdn.net/detail/u013453973/9820755