布局效果不同
- ListView的布局單一工育,只有一個(gè)縱向效果腹缩。
- RecyclerView的布局效果豐富旨剥,可以在LayoutMananger中設(shè)置線性布局(縱向抄瑟、橫向)凡泣、表格布局、瀑布流布局皮假。
- 在RecyclerView中鞋拟,如果存在的LayoutMananger不能滿足需求,可以在LayoutMananger的API中自定義Layout:例如scrollToPosition(),setOrientation()等等惹资。
空數(shù)據(jù)處理
在lisrView中有個(gè)setEmptyView()用來(lái)處理Adapter中數(shù)據(jù)為空的情況贺纲。但是在RecyclerView中沒(méi)有這個(gè)api,所以在RecyclerView中需要進(jìn)行一些數(shù)據(jù)判斷來(lái)實(shí)現(xiàn)數(shù)據(jù)為空的情況布轿。
局部刷新
- 在listView中通常刷新數(shù)據(jù)是用notifyDataSetChanged()哮笆,這種刷新數(shù)據(jù)是全局刷新(每個(gè)item的數(shù)據(jù)都會(huì)重現(xiàn)加載一遍)。
- RecyclerView支持局部刷新汰扭,例如:notifyitemChanged();
- 如果想在listview中實(shí)現(xiàn)局部刷新,我們可以在Adapter中福铅,實(shí)現(xiàn)一個(gè)onitemChanged方法萝毛,在方法中獲取到這個(gè)item的position(可以通過(guò)getFirstVisiblePosition()),然后調(diào)用getView()方法在刷新這個(gè)item的數(shù)據(jù)滑黔。
動(dòng)畫效果
1.在RecyclerView有自己的動(dòng)畫效果笆包,如:notifyItemChanged(), notifyDataInserted(), notifyItemMoved()等等;如果我們需要用自己的動(dòng)畫略荡,RecyclerView也提供了RecyclerView.ItemAnimator類庵佣。
2.listView沒(méi)有實(shí)現(xiàn)動(dòng)畫也沒(méi)有提供api,不過(guò)我們可以自己在Adapter中實(shí)現(xiàn)汛兜。
只是部分巴粪,還有一些沒(méi)記筆記。