天天看點

RecyclerView學習(一)----初步認知

先上效果圖:

RecyclerView學習(一)----初步認知

左側一個普通的Listview,沒什麼好說的。至于右側,當時看到原型圖第一反應是Listview+Gridview來實作(之前沒使用過RecyclerView),和主管讨論後建議我使用RecyclerLiew來實作,更加靈活,定制性更高。

OK,開幹!

先感謝鴻洋大神的這篇部落格提供的理論與技術支援

<a href="http://blog.csdn.net/lmj623565791/article/details/45059587">Android RecyclerView 使用完全解析 體驗藝術般的控件</a>

接下來進入正題。

分析一下需求,其實就是一個二級分類與三級分類,根據不同的type進行區分。顯示資料的時候,按照listview+gridview的寫法,上面一行textView顯示二級分類,下面一個gridview顯示三級分類,然後寫兩個擴充卡去管理資料。RecycleView靈活友善的地方就展現在這裡,可以組合設計出需要的布局,管理使用也更簡單。

1.布局檔案:

一目了然,沒什麼

2.資料對象:

type用于區分二級分類以及三級分類

3.ViewHolder的申明:

ViewHolder是用來緩存元素的布局資訊與資料以提高性能。listview的做法是自己實作ViewHolder來緩存結果。RecyclerView的強大之處就在于,它本身就提供了ViewHolder,我們隻要繼承自該ViewHolder就可以了,至于ViewHolder怎麼存儲,系統會自動幫我們搞定。

4.CategoryAdapter的使用:

自定義的CategoryAdapter繼承RecyclerView.Adapter,并且重寫了父類的幾個方法。這裡這幾個方法是重點,着重說明一下

(1)

用于決定元素的布局使用哪種類型,傳入的是資料源List的下标position,傳回的是一個int型标志,傳遞給onCreateViewHolder的第二個參數。

(2)

根據getItemViewType傳入的viewType來渲染構造具體的ViewHolder,傳回的是不同類型的ViewHolder

(3)

根據傳入的資料源List的下标position,得到不同的viewType,給不同的ViewHolder綁定資料

(4)

傳回lists的size

5.Activity中的使用:

元件的申明與初始化,資料與擴充卡的準備,然後就是recyclerview的具體使用了。

在給recyclerview設定網格布局管理器實作類似gridview的效果的時候,出現了一個很大的問題。二級分類占一列,三級分類占三列,是以需要根據type來動态設定不同的列數。這一塊是主管幫着寫的,調用的是mLayoutManager.setSpanSizeLookup方法,重寫裡面的getSpanSize()方法來根據type傳回不同的值,最後載顯示不同的列數。

至此,就能夠實作開始的效果圖了。關于RecyclerView的其他用法,點選事件,動畫效果等,有時間會繼續研究更新的~~

繼續閱讀