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,024评论 25 708
  • 一.常用控件的使用方法 1.TextView match_parent 由父布局来决定当前控件的大小。wrap_c...
    努力生活的西鱼阅读 1,213评论 5 0
  • 这篇文章分三个部分,简单跟大家讲一下 RecyclerView 的常用方法与奇葩用法;工作原理与ListView比...
    LucasAdam阅读 4,413评论 0 27
  • 登上前往墨尔本的飞机,这飞机真的很强。。。座位那么多就不说了,那个小屏幕确实很先进啊!电影--指环王123,摔跤吧...
    不好好学习不改名_阅读 898评论 1 4
  • “我想,没有一个人会承认自己是一个缺乏爱的能力的人,这会让人感到近似晕眩的无力和羞愧,但如果我们能深入地看到在这匮...
    liangye阅读 475评论 5 2