還在用ListView?

還在用Lisview?RecyclerView都已經出來一年多了!git

想必你們多或多或少的接觸過或者瞭解過RecyclerView,爲何沒有用起來,緣由大概以下?github

  • ListView我用的挺好的,爲何要換RecyclerView?ide

  • ListView穩定,熟悉,還知道不少開源庫,特別的好用!佈局

  • RecyclerView不能添加頭部,ListView能!性能

RecyclerView

在Andorid 5.0出來不久,我就已經寫過RecyclerView的簡單介紹以及基本使用,不瞭解的能夠看看ListView升級版RecyclerView,瞭解過的同窗能夠忽略,並往下看。動畫

  • RecyclerView最大的優點就是靈活,RecyclerView只需改變一行代碼就能夠變化多種不一樣的佈局顯示排版,這一點對於開發者是很是方便的!this

  • RecyclerView.Adapter,比BaseAdapter作了更好的封裝,把BaseAdapter的getView方法拆分紅onCreateViewHolder方法和onBindViewHolder方法,強制須要建立ViewHolder,這樣的好處就是避免了初學者寫性能不佳的代碼spa

在實戰中咱們會遇到什麼問題?

get到下面的技能就可以在使用RcyclerView的大路上暢通無阻了!.net

  • 添加分割線code

  • 添加點按效果

  • 列表動畫

  • 改變某個數據保持當前位置

  • 添加頭部尾部

  • 列表分組

  • 各類效果集成Demo

  • 更靈活的RecyclerView

添加分割線

//經過如下方法添加分割線
mRecyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST));

DividerItemDecoration須要繼承RecyclerView.ItemDecoration這個抽象類實現一些方法 。可是我感受過於麻煩,因此我想到的是:
直接在item_view裏面底部本身添加一根線佈局,這樣就無需重寫了,而且這樣還有個好處就是,若是細心的同窗會發現,添加分割線,最後一個item下面不會有分割線,顯然當數據量不足一個屏幕的時候顯得很突兀,可是在item_view下面添加一個線的佈局則不會出現這種狀況

添加點按效果

RecyclerView直接在item_view裏面配置便可selector便可。

動畫

一個好的用戶體驗就是要有操做動畫的過渡,而不是生硬的刷新列表。

推薦一個RecyclerView的動畫庫(recyclerview-animators) 這裏寫圖片描述

RecyclerView自帶添加、刪除動畫,而ListView則需添加額外的代碼才能實現。
刪除調用RecyclerView的adapter的notifyItemRemoved
添加調用RecyclerView的adapter的notifyItemInserted

說到adapter咱們就來講說RecyclerView.Adapter和BaseAdapter相比,額外提供了一下這些方法:

// 數據發生了改變,那調用這個方法,傳入改變對象的位置。
public final void notifyItemChanged(int position);
// 能夠刷新從positionStart開始itemCount數量的item了
public final void notifyItemRangeChanged(int positionStart, int itemCount);
// 添加,傳入對象的位置。
public final void notifyItemInserted(int position);
// 刪除,傳入對象的位置。
public final void notifyItemRemoved(int position);
// 對象從fromPosition移動到toPosition 
public final void notifyItemMoved(int fromPosition, int toPosition); 
//批量添加 
public final void notifyItemRangeInserted(int positionStart, int itemCount);
//批量刪除
public final void notifyItemRangeRemoved(int positionStart, int itemCount);

改變列表某個佈局狀態且保持當前位置

這種需求是廣泛存在的,就是改變列表某一個item數據,而後刷新列表,若是是ListView刷新後則會回到最頂部,而RecyclerView一樣的操做可是原來滑動的位置不變。

各類解決方案的RecyclerView的Adapter

BaseRecyclerViewAdapterHelper 

效果展現

佈局更靈活的RecyclerView

twoway-view 封裝了RecyclerView經常使用方法,如click等等,以及支持了更多不一樣的佈局,使得RecyclerView使用起來更簡單! 這裏寫圖片描述

造起來!小夥伴們!

相關文章
相關標籤/搜索