RecyclerView淺析

RecyclerView是Android 5.X中新增在support-v7架包中的新組件,同時也是作為ListView和GridView的升級,可以更加方便和高效地實現ListView和GridView,Staggered。它在官方API的描述如下:Class Overview A flexible view for providing a limited window into a large data set.與此前的ListView 相比,RecyclerView不僅可以回收復用Item,在這邊所有有關布局,繪制,數據綁定等都被分拆成不同的類進行管理,而且已經封裝好了ViewHolder,開發者只需實現自己所需的ViewHolder()即可。

RecyclerView可以極簡的實現不同的布局效果,大概可分為以下三種:線性布局效果,網格布局效果和瀑布流布局效果;其根本就是在于RecyclerView的布局管理器RecyclerView.LayoutManeger,通過一個setLayoutManager()方法為RecyclerView設置布局效果,同時可通過ItemDecoration()設置item之間的分隔線,ItemAnimation()設置動畫效果。

1.RecyclerViewAdapter類的實現

要使用RecyclerView必須先實現RecyclerView的數據適配器來加載數據,將數據與每個Item界面進行綁定,一般的實現代碼如下:public class RecyclerViewAdapter? extends? RecyclerView.Adapter<RecyclerViewAdapter.RecyclerViewHolder>,其中RecyclerViewHolder是我們自己實現ViewHolder,繼承自RecyclerView.ViewHolder,在RecyclerViewHolder實例化我們需要的控件,并且可為控件設置必要的監聽事件(必須implements View.OnClickListener)。由于RecyclerView并未沒有監聽事件的接口,所以需要我們自定義接口回調機制,創建一個監聽事件接口,模板代碼如下:

public interface OnItemClickListener {

voidonItemClick(View view, intposition);

voidonItemLongClick(View view, intposition);

}

public OnItemClickListener onItemClickListener;

public void setOnItemClickListener(OnItemClickListener ?onItemClickListener) {

this.onItemClickListener= onItemClickListener;

}

實現必要的監聽事件后,還需重寫RecyclerView的幾個方法:

public int getItemCount(){

return mData.size();

}

public ViewHolder onCteateViewHolder(ViewGroup viewGroup, int position){

View view = LayoutInflate.from(ViewGroup.getContext()).inflate(R.layout.xxx, viewGroup, false);

return new ViewHolder(view);

}

public void onBindViewHolder(ViewHolder viewHloder, int position){

viewHloder.textView.set(" ");

}

PPS:監聽事件也可在onBindViewViewHolder()中實現,不過在實現ViewHolder時不必實現點擊事件的接口。監聽事件的邏輯代碼直接寫在onBindViewViewHolder()即可。




最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,462評論 25 708
  • 一.常用控件的使用方法 1.TextView match_parent 由父布局來決定當前控件的大小。wrap_c...
    努力生活的西魚閱讀 1,230評論 5 0
  • 這篇文章分三個部分,簡單跟大家講一下 RecyclerView 的常用方法與奇葩用法;工作原理與ListView比...
    LucasAdam閱讀 4,414評論 0 27
  • 登上前往墨爾本的飛機,這飛機真的很強。。。座位那么多就不說了,那個小屏幕確實很先進啊!電影--指環王123,摔跤吧...
    不好好學習不改名_閱讀 899評論 1 4
  • “我想,沒有一個人會承認自己是一個缺乏愛的能力的人,這會讓人感到近似暈眩的無力和羞愧,但如果我們能深入地看到在這匱...
    liangye閱讀 476評論 5 2