ListView
ListView
是一個列表控件,需要搭配Adapter
使用。通過自定義一個Adapter
,繼承自BaseAdapter
,然後在adapter
中完成數據的綁定,最後通過ListVIew.setAdapter()
方法將listView
和adapter
綁定起來。
ListView
可以添加表頭和表尾,
addHeaderView(View v)
:添加headView
(表頭),括號中的參數是一個View
對象addFooterView(View v)
:添加footerView
(表尾),括號中的參數是一個View
對象addHeaderView(headView, null, false)
:和前面的區別:設置Header
是否可以被選中addFooterView(View,view,false)
:同上
設置ListView
ListView
設置只需要一個屬性,就是適配器Adapter
。適配器中通過getview
()方法獲取每一行需要的item
。
RecyclerView
RecyclerView
是Android5.0
之後谷歌推出的一個新控件,用來代替ListView
,更加靈活和強大。使用RecyclerView
的時候必須制定一個適配器Adapter
和一個佈局管理器LayoutManager
。適配器繼承自RecyclerView.Adapter
類,具體實現類似於ListView
的適配器。佈局管理器用於確定RecyclerView
中Item
的展示方式以及決定何時複用已經不可見的Item
,避免重複創建以及執行高成本的findViewById()
方法。
設置RecyclerView
RecyclerView可以設置四個屬性
- LayoutManager(佈局管理器,必選)
- Adapter(適配器,必選)
- ItemDecoration(每個Item之間的間隙,默認爲空,非必選)
- ItemAnimator(添加刪除Item的動畫,默認WeirDefaultItemAnimator,非必選)
三種佈局管理器
RecyclerView能夠實現各種各樣的佈局效果,核心在於LayoutManager,除了這三種以外,如果想實現自定義效果,可以自定義佈局管理器,繼承自LayoutManager,實現相應的方法。
-
LinerLayoutManager 以垂直或者水平列表方式展示Item
-
GridLayoutManager 以網格方式展示Item
-
StaggeredGridLayoutManager 以瀑布流方式展示Item
總結
- 在一些場景下,ListView和RecyclerView的效果沒有太大區別,兩者都能很好的工作。
- ListView比RecyclerView實現要簡單一些,ListView比較簡單和快捷,RecyclerView暴露了更多的接口,所以更加的完善和強大靈活。