Android RecyclerView ListView Holder ViewType

Android RecyclerView基本介紹

許慎文 2016/11/16 15:21:53
1164

1. 前言

本文介紹Android RecyclerView,是GoogleAndroid5.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 :

主要的程式部份,用來定義資料的呈現,並設定ViewHolderType

2. ViewHolder :

Android內的靜態類別,用來宣告View裡會使用到的元件,設定完一次的findViewById,如果有可重複使用的View進行用,減少findViewById的同複使用。

3. LayoutManager :

用來設定RecyclerView的顯示型態,LinearLayoutManagerGridLayoutManagerStaggeredGridLayoutManager,會在下列文章做簡單說明。

4. Code

首先介紹主要的程式RecyclerView.Adapter

這部份和ListViewBaseAdapter一樣,需要定義資料的型態。

不同的點是RecyclerView.Adapter定要使用ViewHolder資源的重用。

以下是必須複寫的程式


onCreateViewHolder(ViewGroup parent, int viewType)

RecyclerView內的畫面被建立時,

之前沒有ViewHolder可以使用的時候,

會呼叫這段程式來建立一份新的ViewHolder

配合getItemType特定現不同畫面的效果。


範例程式如下 :

ViewHolder :



onBindViewHolder(RecyclerView.ViewHolder holder, int position)

    這段程式是用來ViewHolder裡的元件,需要執行的相對應動作,

例如設定文字、圖片,或是onClick事件。

    

範例程式如下 :


getItemcount

    回傳資料的總筆數

    

    

另外果有需要,可以複寫getItemTypeonCreateViewHolder使特定資料的畫面的呈現。

        以下是簡單的範例

        資料筆數為2的倍數時,指定為特定Type

        

    

    

    接著Activity下宣告一個LayoutManager

這個是為了指定畫面的顯示方式。

LayoutManager呈現的畫面有幾種不同的形式

這裡說明GridLayoutManager LinearLayoutManager



GridLayoutManager

使用這種方式,畫面會GridView一樣排列

設定方式如下,在宣告LayoutManager時,要先指定Grid橫向的欄數。

並使用setSpanSizeLookup來設定該筆資料顯示時的欄數。

順帶一,當顯示欄數等於橫向欄數時,

畫面會填滿RecycleView


程式如下 :


LinearLayoutManager

使用這種設定,畫面會像LinearLayout一樣排列,

另外可以指定排列的方向。


程式如下 :

            

    

    最後在Activity裡設定RecycleViewadapderlayoutmanager

就大功告成,收工其他

    

    


5. 個人實作流程整理


1. 確認資料格式、畫面呈現

2. 實作各畫面Layout

3. 實作Adapter(HolderViewType)

4. Activity宣告RecyclerView並指定AdapterLayoutManager

許慎文