RecyclerView 是 android-support-v7-21 版本中新增的一个 Widgets。最近开始一个新项目,于是决定尝试一下,这里总结对于RecyclerView使用中的一些见解。

Why RecyclerView

以下是Google在API Document中对于RecyclerView的描述

A flexible view for providing a limited window into a large data set.

它所提供的功能于ListView、GridView基本相同,就是显示大量的同质数据。

以下是它的新特性:

  • 分离出数据显示相关的所有问题,只关注View的回收和复用
  • 对数据的显示、动画的配置进行高度解耦,提供了插拔式的体验
  • 强制使用ViewHolder模式,消除不必要的Layout Resource查找时间
  • 内置添加和移除动画

1.导入类库

1
> compile ``'com.android.support:recyclerview-v7:+'
>

2.相关类介绍

  • RecyclerView.Adapter:包装数据集合并为每个条目创建视图
  • RecyclerView.ViewHolder:保存用于显示数据的子View
  • LayoutManager:控制条目视图放置的位置、方式
  • ItemDecoration:绘制装饰视图
  • ItemAnimator:ItemView的动画效果

3.生命周期

  • getItemViewType:获取View类型
  • onCreateViewHolder:创建ViewHolder
  • onViewAttachedToWindow:当Item可见时调用
  • onBindViewHolder:绑定数据以及逻辑控制样式
  • onViewDetachedFromWindow:Item不可见时调用
  • onViewRecycled:Item被回收时调用

4.刷新方法

  • notifyDataSetChanged:刷新所有
  • swapAdapter:内部会调用setAdapter(),如果ViewHolder相同,不会清空RecycledViewPool
  • notifyItemChanged:顾名思义,更新部分指定数据,更加灵活

5.关于onItemClick()

刚开始使用的时候竟然发现不能设置onItemClickListener,这也是之前ListView耦合度太高才有的特性。那么我们可以:

  • 在onBindViewHolder或ViewHolder初始化中实现

  • 定义Interface进行回调