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




你可能感兴趣的:(RecyclerView浅析)