Android RecyclerView基本介紹
1. 前言
本文介紹Android RecyclerView,是Google在Android5.0時推出,目的是優化ListView相關程式及效能。
在需要重複利用的列表可以有效的優化。並可以讓同一個RecyclerView依需求顯示不同的畫面,大大的強化了設定複雜畫面的可能性。
以下內容會說明撰寫前的準備,會呼叫的方法和一個簡單的範例。
2. 開始前準備
為了兼容舊版本的Android裝置,請在gradle內加入
dependencies {
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:gridlayout-v7:23.1.0'
}
3. 結構說明
RecyclerView過程中會使用到下列的class。
1. RecyclerView.Adapter :
主要的程式部份,用來定義資料的呈現,並設定View的Holder和Type。
2. ViewHolder :
Android內的靜態類別,用來宣告View裡會使用到的元件,設定完一次的findViewById,如果有可重複使用的View會進行重用,減少findViewById的同複使用。
3. LayoutManager :
用來設定RecyclerView的顯示型態,有LinearLayoutManager、GridLayoutManager及StaggeredGridLayoutManager,會在下列文章做簡單說明。
4. Code
首先介紹主要的程式RecyclerView.Adapter
這部份和ListView的BaseAdapter一樣,需要定義資料的型態。
不同的點是RecyclerView.Adapter一定要使用ViewHolder做資源的重用。
以下是必須複寫的程式
• onCreateViewHolder(ViewGroup parent, int viewType)
當RecyclerView內的畫面被建立時,
且之前沒有ViewHolder可以使用的時候,
會呼叫這段程式來建立一份新的ViewHolder。
可配合getItemType做出特定資料呈現不同畫面的效果。
範例程式如下 :
ViewHolder :
• onBindViewHolder(RecyclerView.ViewHolder holder, int position)
這段程式是用來ViewHolder裡的元件,需要執行的相對應動作,
例如設定文字、圖片,或是onClick事件。
範例程式如下 :
• getItemcount
回傳資料的總筆數。
另外如果有需要,可以複寫getItemType,配合onCreateViewHolder使特定筆資料的畫面的呈現。
以下是簡單的範例,
當資料筆數為2的倍數時,指定為特定Type。
接著在Activity下宣告一個LayoutManager,
這個類別是為了指定畫面的顯示方式。
LayoutManager呈現的畫面有幾種不同的形式,
這裡說明GridLayoutManager 及LinearLayoutManager。
• GridLayoutManager
使用這種方式,畫面會像GridView一樣排列。
設定方式如下,在宣告LayoutManager時,要先指定Grid橫向的欄數。
並使用setSpanSizeLookup來設定該筆資料顯示時的欄數。
順帶一提,當顯示欄數等於橫向欄數時,
畫面會填滿RecycleView。
程式如下 :
• LinearLayoutManager
使用這種設定,畫面會像LinearLayout一樣排列,
另外可以指定排列的方向。
程式如下 :
最後在Activity裡設定RecycleView的adapder和layoutmanager,
就大功告成,該收工寫其他部份了
5. 個人實作流程整理
1. 確認資料格式、畫面呈現
2. 實作各畫面Layout
3. 實作Adapter(Holder、ViewType)
4. 於Activity宣告RecyclerView並指定Adapter及LayoutManager