顯示具有 RecyclerView 標籤的文章。 顯示所有文章
顯示具有 RecyclerView 標籤的文章。 顯示所有文章

2017年4月30日 星期日

RecyclerView基本用法 - 2/2 Adapter

RecyclerView中最特別的就是需要自訂一個Adapter,代碼中最少要重寫三個部分

  1. onCreateViewHolder
    • 為每一項資料建立一個View
  2. onBindViewHolder
    • 更改每個View的內容
  3. getItemCount
    • 取得資料的總數量
下面的代碼是一個有基本功能的RecyclerView Adapter
Activity中的代碼如下 直接使用上面的代碼已經可以建立一個簡單的RecyclerView,而且Activity已經能捕捉到點擊動作了。
這個範例中RecyclerView中的每項資料只包括一個TextView,如果想再加點東西的話也很簡單,例如想每項資料包括兩個TextView並顯示不同的文字就需要更改以下幾個地方就行了。

  1. 範例中DataSet中每列資料只包括一個String,要自訂一個包括兩個String的封裝並建立ArrayList<自訂>代替ArrayList<String>
  2. 更改item.xml,新增一個TextView
  3. Adapter中定義新增的TextView
  4. Adapter中的onBindViewHolder加入新增TextView的setText代碼

RecyclerView基本用法 - 1/2

從Android 5.0開始新增了RecyclerView,這個View的出現是為了代替舊有的GridView及ListView。GridView及ListView雖然現在還可以正常使用,但官方文件都建議使用RecyclerView,說它的效能較好,所以新建的應用都應該使用RecyclerView。此文章記錄了RecyclerView的基本用法,方便自己下次使用時不用再搜索一番。
RecyclerView的效能較好這一點使用者可能不容易察覺,但另一個特點所有人都能看到,這就是新增或刪除資料時的動畫效果。另外RecyclerView比起GridView及ListView獲取點擊事件的方法也有點不同。
1. 因為RecyclerView是Android Support Library內的一個元件,第一步要先安裝它,在build.gradle(Module: app) 插入以下代碼來安裝
2. 建立一個xml檔案用作RecyclerView內每個項目的樣板,最基本的竟是一個TextView
3. 插入RecyclerView到所需的位置
4. 在代碼中只有兩個東西需要設定:LayoutManager及Adapter
5. 三個LayoutManager的效果圖

6. 如果想要刪除,更新及新增資料的話除了要改變ArrayList的資料外,還要通知Adapter以更新資料同時顯示動畫效果,通知的方法有以下幾種
  • notifyDataSetChanged
    • 整個DataSet重新載入一次,沒有動畫效果
  • notifyItemChanged
    • 通知更新一項資料,有動畫效果
  • notifyItemRangeChanged
    • 通知更新數項資料,有動畫效果
  • notifyItemInserted
    • 通知新增一項資料,有動畫效果
  • notifyItemRangeInserted
    • 通知新增數項資料,有動畫效果
  • notifyItemRemoved
    • 通知刪除一項資料,有動畫效果
  • notifyItemRangeRemoved
    • 通知刪除數項資料,有動畫效果
  • notifyItemMoved
    • 通知移動一項資料,有動畫效果
下面是三種不同排列方法的動畫效果
https://youtu.be/M6LdHBxwPuE

7. 關於RecyclerView的Adapter會記錄在下一篇文章