2018年2月5日 星期一

[Android] ListView vs RecyclerView 垂直單欄簡單表單

問題:
我要做一個垂直的單欄表單,點項目開新頁,該用ListView 還是 RecyclerView做比較好?

參考:DevAndroidAndroidPub簡書StackOverflow1StackOverflow2

說明:

結論先說,RecyclerView是大家都推的方式,雖然有些缺點且較使用複雜,但都可解。但是如果學習時間不夠或不想學習,就用ListView吧...

綜合參考來源,用RecyclerView,只考慮做垂直的單欄表單 (Vertical single column list)的優缺點分列如下:

優(Pros):

  • 強制要求用ViewHolder提高效能,ListView要自己做。
  • 可用DiffUtil做資料集差異更新,ListView要自己做。
  • 內建指定位置項目更新notifyItemChanged,ListView要自己做。
  • 內建局部更新動畫setItemAnimator,ListView要自己做。

缺(Cons):

  • 學習難度較高,因為太活了,要設定較多 = =;。
  • 沒有內建onItemClickListener,RecyclerView要自己做(這個真的希望內建呀..)
  • 沒有內建頭尾項目 HeaderView、FooterView,RecyclerView要自己做。
  • 沒有內建無資料畫面setEmptyView,RecyclerView要自己做。
  • 分隔線(divider)製作較複雜,RecyclerView官方正途方法要用ItemDecoration。
  • 要加入v7包recyclerview項目,如果很討厭引用的話 XD

當然,其他很多人提到的是RecyclerView跟Layout分開,可做直的(Vertical)、橫的(Horizontal)、格子的(Grid)、不對齊的格子(StaggeredGrid),但是太活也是個問題呀 XD
一般同一資料集只會用一種,除非可設定版面變換的。

結論再說一次,RecyclerView是未來寫Android一定會用到的元件,所以能學的時候就學吧,但是拿來做簡單ListView又太麻煩,時間不允許就繼續用ListView,或是上網找找有沒有用RecyclerView做出ListView所有功能實作的包裝範例囉~

關於項目點擊分隔線實作,應該會另外寫一篇,不然太長囉~

沒有留言:

張貼留言