《Android》『RecyclerView』 – 透過 recyclerView 實現 ListView 效果的基本用法

《Android Developers 參考文獻》

➥RecyclerView

 

《簡單介紹》

在以前,若是我們想在有限的手機螢幕上,顯示多個選項、資料或者圖片,通常會使用 ListViewGridView 或者 Gallery 這三種元件,目的是讓使用者能夠有條理的瀏覽所有資訊,但在使用這些元件的時候,卻往往造成了一些不必要的系統資源浪費,在 Android 5.0 (Lollipop) 的版本以後,google 提供了一個新的方法 – RecyclerView,利用這個新的元件,我們可以有效地實現 ListView、GridView 與 Gallery 這三種元件的效果,且在使用上更加的靈活,相信不久之後,RecyclerView 將會逐漸完全取代這些元件。

 

《基本用法》

在 RecyclerView 中,我們透過設定 LayoutManager 來決定它的呈現方式;設定 ItemDecoration 來決定 Item 之間的間隔;設定 ItemAnimator 來決定 Item 增加或刪除時的動畫,這邊我們先以實作一個垂直滑動的 RecyclerView 為例,用來取代 ListView 元件。

activity_main.xml

首先我們在 Layout 佈局檔中加入 RecyclerView。

item_view.xml

接著建立一個 item_view.xml 佈局檔,用來當作 RecyclerView 中的每一個 item 的 view。

MyAdapter

與 ListView 一樣,我們都必須建立一個 Adapter 來控管每個 item 的顯示設定,我們自訂了一個名為 MyAdapter 的類別,此類別繼承了 RecyclerView.Adapter ,並在其中帶入自訂的 MyAdapter.ViewHolder,相關覆寫的方法說明如下 –

  1. 透過建構子把資料清單(mDataSet)傳進來。
  2. 在 MyAdapter 中自訂一個繼承 RecyclerView.ViewHolder 的類別,這邊命名為 ViewHolder,並在此類別中定義每個 item 的介面與邏輯。
  3. onCreateViewHolder 中指定 item 所使用的 view 佈局,並將該 view 轉換成 MyAdapter.ViewHolder 之物件回傳,如此一來,我們就可以使用在前面自訂的 ViewHolder 類別中,所定義的每個 item 的介面。
  4. onBindViewHolder 中透過 position 參數指定每個 item 所用到的資料 (mDataSet.get(position))。
  5. getItemCount 中回傳清單數量。

MainActivity.java

定義好 Adapter 以後,我們就可以直接來使用 RecyclerView 啦!這邊除了要 setAdapter(),另外還要 setLayoutManager(),透過所使用的 layoutManager 來決定 RecyclerView 的呈現方式,另外若有需要,透過 addItemDecoration 來設定分割線。

DividerItemDecoration.java

這是網路上的開源碼,所提供的是一個參照到 Android.R.attr.listDivider 內容之分割線,此分割線是系統默認的,我們可以在 theme.xml 中找到這個屬性。接著,我們將它所使用的 @drawable 改成自己的 drawable 即可。

style.xml

divider_bg.xml

賽肥膩膩

我們是低調到不行的肥膩夫妻檔,一路上一邊吵鬧一邊記錄著生活大小事,最近迷上了宅在家追劇,希望能透過文字將所有看過的影集好好紀錄,整理成屬於我們自己的回憶資料庫。

上 / 下一篇文章

臉書留言

一般留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *