天天看點

recyclerVIew的使用筆記

根據官方的介紹RecylerView是ListView的更新版,既然如此那RecylerView必然有它的優點,現就RecylerView相對于ListView的優點羅列如下:

①RecylerView封裝了viewholder的回收複用,也就是說RecylerView标準化了ViewHolder,編寫Adapter面向的是ViewHolder而不再是View了,複用的 邏輯被封裝了,寫起來更加簡單。

②提供了一種插拔式的體驗,高度的解耦,異常的靈活,針對一個Item的顯示RecylerView專門抽取出了相應的類,來控制Item的顯示,使其的擴充性非常強。例如:你想控制橫向或者縱向滑動清單效果可以通過LinearLayoutManager這個類來進行控制(與GridView效果對應的是GridLayoutManager,與瀑布流對應的還有StaggeredGridLayoutManager等),也就是說RecylerView不再拘泥于ListView的線性展示方式,它也可以實作GridView的效果等多種效果。你想控制Item的分隔線,可以通過繼承RecylerView的ItemDecoration這個類,然後針對自己的業務需求去抒寫代碼。

共計有三種布局管理器可以設定給recycler使用 Lin餓啊人LayoutManager GrideLayoutManager,StaggeredGridLayoutManager(交錯布局—瀑布流:不斷尋找布局中的最低點與最窄的地方,然後根據比例縮放圖檔)

LinearLayoutManager layoutManager = new LinearLayoutManager(this );

//設定布局管理器

recyclerView.setLayoutManager(layoutManager);

//設定為垂直布局,這也是預設的

layoutManager.setOrientation(OrientationHelper. VERTICAL);

③可以控制Item增删的動畫,可以通過ItemAnimator這個類進行控制,當然針對增删的動畫,RecylerView有其自己預設的實作。mRecyclerView.setItemAnimator(new DefaultItemAnimator());

//代碼

recyclerView = (RecyclerView) findViewById(R.id.recyclerView);

LinearLayoutManager layoutManager = new LinearLayoutManager(this );

//設定布局管理器

recyclerView.setLayoutManager(layoutManager);

//設定為垂直布局,這也是預設的

layoutManager.setOrientation(OrientationHelper. VERTICAL);

//設定Adapter

recyclerView.setAdapter( recycleAdapter);

//設定分隔線

recyclerView.addItemDecoration( new DividerGridItemDecoration(this ));

//設定增加或删除條目的動畫

recyclerView.setItemAnimator( new DefaultItemAnimator());

//擴充卡

recyclerView有自己特定的擴充卡recyclerView.adapter,這是一個抽象類要使用這個類需要去實作它裡面方法

①onCreateViewHolder()實作了複用--類似于getview
**這個方法主要為每個Item inflater出一個View,但是該方法傳回的是一個ViewHolder。該方法把View直接封裝在ViewHolder中,然後我們面向的是ViewHolder這個執行個體,當然這個ViewHolder需要我們自己去編寫。直接省去了當初的convertView.setTag(holder)和convertView.getTag()這些繁瑣的步驟。**
           

②onBindViewHolder()–給view指定資料

這個方法主要用于适配渲染資料到View中。方法提供給你了一個viewHolder,而不是原來的convertView。

③getItemCount()

這個方法就類似于BaseAdapter的getCount方法了,即總共有多少個條目。

執行個體:接着來幾個小的執行個體幫助大家更深入的了解RecyclerView的用法,首先來實作一個最簡單的清單,

public class MyRecyclerAdapter extends RecyclerView.Adapter

繼續閱讀