重点使用步骤
一、onCreat中拿到该RecyclerView
二、初始化数据(也可以是在拿控件之前):
(1)拿到数据,一般从服务器获得,demo中是自己初始化.
(2)初始化一个集合List,在类中 ,Object可以为任意对象
(3)初始化一个Adapter(源码用了适配器模式),在类中
(4) 初始化Item布局 三、初始化适配器,该适配器继承
RecyclerView.Adapter mAdapter.MyViewHolder>
(1) 重写onCreateViewHolder MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType);
(1.1) new Holder(未编写), 用填充器 LayoutInflater.from( Context).inflate(R.layout.item_home(//layout//), parent, false) 作为构造函数的参数,作用是将布局文件转化成Holder
(1.2)return holder
(2) 编写Holder 继承ViewHolder
(2.1) 编写构造方法参数为View
(2.1.1) super(view)
(2.1.2) 拿到所有控件,并提升为成员变量 (3) 重写onBindViewHolder(MyViewHolder holder, int position);
(3.1) holder.XXX.setXX 将数据(从集合中拿到的,position作为参数)设置上去
(4) 重写int getItemCount(); return 集合.size();
重要关键点
整体设计

- RecyclerView布局十分灵活, RecyclerView将自己的布局策略全权交给了LayoutManager。仔细阅读源码还可以发现, View的添加,都是通过LayoutManager完成的。
- LayoutManager所做的事情就是拿到ViewHolder中的itemView,然后根据LayoutManager中定义的布局策略,对itemView进行布局,然后添加到RecyclerView中。
- RecyclerView动画的灵活性是通过ItemAnimator实现的。各位猿们可以通过继承ItemAnimator,然后实现里面的方法,来实现各种各样的动画效果。
- RecyclerView装饰系统设计思路,研究ItemAnimator即可
RecyclerView的复用
介绍都说的很明白了,还有其实ViewHolder的创建和bind都是由Recycler执行的。还有LayoutManager获得ViewHolder的itemView,也是通过Recycler提供的。简单介绍一下Recycler和RecyclerViewPool的内部结构。
1.Recycler里有几个ViewHolder的容器,用来存储不同状态的ViewHolder,以便之后复用。其中ViewCacheExtension类,是用户可以自定义复用机制的类。
2.RecyclerViewPool,这个可以从外部对多个RecyclerView设置同一个RecyclerViewPool,从而实现多个RecyclerView中的ViewHolder的复用。
转载自 柴泽建_Jack 感谢