ListView 與 RecyclerView 簡單對比
簡單使用:
ListView繼承重寫BaseAdapter類;
自定義ViewHolder與convertView的優化(判斷是否為空);
RecyclerView繼承重寫RecyclerView.Adapter與RecyclerView.ViewHolder
設定LayoutManager,以及layout的佈局效果
區別:
ListView的佈局比較單一,只有一個縱向效果
RecyclerView的佈局效果豐富,可以在LayoutMananger中設定:線性佈局(橫向縱向),表格佈局,瀑布流佈局,還可以在layoutMananger的API中自定義Layout(scrollToPosition(),findViewByPosition()等等)
空資料處理:
ListView中有個setEmptyView()用來處理資料為空的情況
RecyclerView沒有這個API,需要進行資料判斷來實現資料為空的情況
HeaderView與FooterView:
ListView通過addHeaderView()與addFooterView()來新增頭部底部item,來實現上拉重新整理下拉載入的情況,並不會影響Adapter的編寫
RecyclerView沒有這兩個API,我們需要時可以在Adapter中自己編寫,根據ViewHolder的Type與View來實現,但是這樣會影響到Adapter的資料,新增了Header與Footer後實際的position會大於資料的position
區域性重新整理:
在ListView中重新整理資料是用notifyDataSetChanged(),但是這種重新整理資料是全域性重新整理的,每個Item的資料都會重新載入一遍,就會非常消耗資源
RecyclerView可以實現區域性重新整理,notifyItemChanged()
但是要在ListView實現區域性重新整理,我們可以在Adapter中實現一個onItemChanged(),在方法中獲取這個item的position(可以通過getFirstVisiblePosition()),然後呼叫getView()來重新整理這個item的資料
動畫效果:
RecyclerView已經封裝好API來實現動畫效果,例如notifyItemChanged() notifyItemMoved(),如果需要自定義的動畫效果可以通過相應的介面實現自定義的動畫效果RecyclerView.ItemANimator類,然後呼叫RecyclerView.setItemAnimator()
ListView沒有動畫效果的實現,但我們可以在Adapter自己實現item的動畫效果
Item點選事件:
ListView中有onItemClickListener(),onItemLongClickListener(),onItemSelectedListener(),但是新增HeaderView與FooterView就不一樣了,HeaderView與FooterView都會算進position,就有可能丟擲陣列越界。
我們可以在getItemId()中通過返回id來標識相應的item;但是我們可以在Adapter中針對每個Item寫在getView()中比較合適
Recycle讓View中提供了addOnItemTouchListener() 監聽item的觸控事件,我們可以通過RecyclerVIew的addOnItemTouchListener()加上Gesture Detector來實現類似ListView那樣監聽某個item某個操作方法。
相關文章
- RecyclerView與ListView比較View
- RecyclerView的簡單使用View
- QT - 13.1.1 ListView 的簡單使用QTView
- 簡單介紹SpringSecurity框架簡介及與shiro特點對比SpringGse框架
- Kotlin和Java的簡單對比KotlinJava
- 日誌收集工具簡單對比
- 使用 Flex 佈局與其他普通佈局的簡單對比Flex
- 用ListView簡單實現滑動列表View
- Python實現簡單的excel對比工具PythonExcel
- Android 列表(ListView、RecyclerView)不斷重新整理最佳實踐AndroidView
- 對比SQL中簡單巢狀查詢與非巢狀查詢CFSQL巢狀
- Android 時間軸的實現(RecyclerView更簡單)AndroidView
- 簡單對比一下CORS跨域與Nginx反向代理跨域優劣CORS跨域Nginx
- EasyReact的簡單試用及和RAC的對比React
- UUID7與UUID4簡單比較UI
- Google Guice 與 Noear Solon 的簡單對照GoGUI
- Python==與is對比Python
- 字串-簡單字串比較字串
- vue 之 axios 和 vue-resource簡單get請求對比VueiOS
- 簡單對比測試了幾個基於 swoole 的框架框架
- 與RecyclerView的日常View
- Kotlin 與 Java 對比KotlinJava
- pyppeteer與selenium對比
- 對比Riak與HbaseOS
- redis與rabbitmq對比RedisMQ
- 使用RecyclerView簡單快捷地擼一個直播公屏出來View
- 5 大分散式 ID 生成器優缺點簡單對比分散式
- 對RecyclerView Item做動畫View動畫
- Python中x=y與x==y的區別。(比較簡單)Python
- 單例模式實現對比單例模式
- 純js實現 vue 元件 與 vue 單檔案元件對比JSVue元件
- synchronized 與 Lock 的對比synchronized
- Terraform與其他工具對比ORM
- openGauss 對比-磁碟與MOT
- 對CSRF的簡單理解
- mongodb和hbase的簡單比較MongoDB
- Go 與 C++ 的對比和比較GoC++
- 現代ETL工具與傳統解決方案清單附對比