《第一行代碼》系列讀書筆記
- ListView
- RecyclerView
1. ListView
-
使用:
數據源準備->適配器加載數據源->控件加載適配器
1.佈局界面只需要一個ListView,設置好寬高和id就夠了。2.定義一個實體類,作爲ListView適配器的適配類型
3.爲ListView的子項制定一個我們自定義的佈局
4.創建一個適配器
5.在Activity中創建適配器對象,然後把適配器對象傳遞給ListView
-
提升ListView的運行效率
1.在適配器裏的getView()方法中,每次都將佈局重新加載一遍,在快速滑動時,容易造成界面卡頓,影響用戶體驗。
解決方法:利用getView()方法中的convertView參數,將之前加載好的佈局進行緩存,以便之後可以進行重用。
2.在getView()中調用View的findViewByid()方法獲取控件的實例,會重複獲取,降低運行效率。
解決方法:新增一個內部類ViewHolder,用於對控件的實例進行緩存。
-
ListView的點擊事件
ListView的每一項Item都是可以被監聽的,監聽器是OnItemClickListener,其中返回的參數position表示被點擊的某項在整個List中的位置,從0算起。當點擊ListView中的任何一個子項時,就會回調**onItemClick()**方法。
2.RecyclerView
相比於ListView,擴展性更好,能夠實現橫向滾動。
-
使用:
添加依賴庫,記得Sync Now進行同步compile 'com.android.support:recyclerview-v7:24.2.1'
使用方法和ListView類似
1.佈局界面只需要一個RecyclerView。2.定義一個實體類,作爲RecyclerView適配器的適配類型
3.爲RecyclerView的子項制定一個我們自定義的佈局
4.創建一個適配器 適配器繼承自RecyclerView.Adapter,則需要重寫onCreateViewHolder()->創建ViewHolder實例,並把加載出來的佈局傳入到構造函數,最後將ViewHolder的實例返回。
onBindViewHolder()->用於對RecyclerView子項的數據進行賦值,會在每個子項被滾動到屏幕內的時候執行。
getItemCount()->一共有多少個子項。
5.在Activity中創建適配器對象,然後把適配器對象傳遞給RecyclerView
LayoutMnager用於指定RecyclerView的佈局方式,LinearLayoutManager是線性佈局,可以實現和ListView類似的效果。
實現橫向佈局
可以調用LinearLayoutManager的setOrientation()方法來設置佈局的排列方式,默認是縱向排列,傳入LinearLayoutManager.HORIZONTAL表示讓佈局橫向排列。
GridLayoutManager可以用於實現網格佈局,StaggeredGridLayoutManager用於是想瀑布流佈局RecyclerView的點擊事件
沒有提供註冊監聽器的方法,需要給子項具體的View去註冊點擊事件。