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()即可。