通过此文可以简单了解以下:
- 1、RecycleView是什么
- 2、RecycleView的简单使用
- 3、RecycleView Item分割线的自定义
- 4、RecycleView的默认动画
先来看下效果:
RecycleView已经面世很久,相信大家也已经有所熟悉,也在很多应用中得到广泛的使用。那么RecyclerView拥有比ListView,GridView之类控件都有哪些优点呢:
- 1、数据绑定
- 2、Item View创建
- 3、View的回收以及重用等机制。
RecycleView的简单介绍:
有关recycleview的介绍,网上已经有了好多,在次小白理解尚浅,就不过多介绍了
①.采用LayoutManager来处理Item的布局
②.提供Item操作的默认动画,例如在增加或者删除item的时候
你也可以自定义LayoutManager或者设置添加/删除的动画,整体的RecyclerView结构图如下:
RecyclerView提供了三种内置的LayoutManager:
* LinearLayoutManager:线性布局,横向或者纵向滑动列表
线性布局,类型包括Vertical和Horizontal
GridLayoutManager:表格布局,继承自LinearLayoutManager,实现效果类似GridView
* StaggeredGridLayoutManager:流式布局,例如瀑布流效果交错的格子布局,同样也是LayoutManager的实现类,类型包括Vertical和Horizontal,与GridLayoutManager很相似,不过是交错的格子,也就是宽高不等的格子视图,类似瀑布流的效果
RecycleView的相关类:
RecycleView的基本用法:
- 1、添加依赖
compile 'com.android.support:design:23.1.1'
(这个包下也有) 或者compile'com.android.support:recyclerview-v7:23.1.1’
- 2、使用recycleview组件,和listview使用一样。
- 3、控件初始化,设置布局管理器以及Adapter
好了,下面我们就来使用代码说明一下怎么使用吧:
1、RecycleView的适配器Adapter:适配器,绑定数据集
继承 RecyclerView.Adapter
要重写的方法
// 创建ViewHolder ,相当于ListVie Adapter 的getView 方法
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
return null;
}
// 数据绑定
public void onBindViewHolder(ViewHolder viewHolder, int i) {}
// 数据的长度
public int getItemCount() { return 0;}
2、ViewHolder:根据当前的数据保存视图
继承 RecyclerView.ViewHolder
要重写的方法
class ViewHolder extends RecyclerView.ViewHolder{
public ViewHolder(View itemView) {
super(itemView);
// 绑定控件
}
}
3、ItemDecoration:勉强理解为item装饰器,可以美化item
1.继承 RecyclerView.ItemDecoration
2. 重要方法:
//在itemView绘制完成之前调用,也就是说此方法draw出来的效果将会在itemView的下面
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state)
{
super.onDraw(c, parent, state);
}
//与onDraw相反,draw出来的效果将叠加在itemView的上面
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state)
{
super.onDrawOver(c, parent, state);
}
//算通过配置outRect来设置itemView的inset边界,相当于设置itemView的margin
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
}
4、ItemAnimator:动画(当item被增加,删除,重新摆放时动画才有效)。
1.继承 RecyclerView.ItemAnimator
2. 提供默认的Animator:DefaultItemAnimator
3.github 开源
https://github.com/gabrielemariotti/RecyclerViewItemAnimators
5、LayoutManager:布局管理器。决定item如何摆放
LinearLayoutManager
线性布局,LayoutManager的实现类,类型包括Vertical和Horizontal
GridLayoutManager
格子布局,继承自LinearLayoutManager,实现效果类似GridView
StaggeredGridLayoutManager
交错的格子布局,同样也是LayoutManager的实现类,类型包括Vertical和Horizontal,与GridLayoutManager很相似,不过是交错的格子,也就是宽高不等的格子视图,类似瀑布流的效果
来看下代码怎么实现的吧,代码里面的解释一般都有了:
MainActivity.java
package com.example.recycleviewdemo;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;