我要做一個垂直的單欄表單,點項目開新頁,該用ListView 還是 RecyclerView做比較好?
參考:DevAndroid、AndroidPub、簡書、StackOverflow1、StackOverflow2
說明:
結論先說,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所有功能實作的包裝範例囉~
關於項目點擊、分隔線實作,應該會另外寫一篇,不然太長囉~
沒有留言:
張貼留言