学习RecyclerView应该把控的几个点

重点使用步骤
一、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();
重要关键点
整体设计
![!布局策略](https://chacojack.github.io/2016/08/20/RecyclerView%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90-%E4%B8%80-%E6%95%B4%E4%BD%93%E8%AE%BE%E8%AE%A1/02.png)

  1. RecyclerView布局十分灵活, RecyclerView将自己的布局策略全权交给了LayoutManager。仔细阅读源码还可以发现, View的添加,都是通过LayoutManager完成的。
  2. LayoutManager所做的事情就是拿到ViewHolder中的itemView,然后根据LayoutManager中定义的布局策略,对itemView进行布局,然后添加到RecyclerView中。
  3. RecyclerView动画的灵活性是通过ItemAnimator实现的。各位猿们可以通过继承ItemAnimator,然后实现里面的方法,来实现各种各样的动画效果。
  4. RecyclerView装饰系统设计思路,研究ItemAnimator即可

RecyclerView的复用
这里写图片描述

介绍都说的很明白了,还有其实ViewHolder的创建和bind都是由Recycler执行的。还有LayoutManager获得ViewHolder的itemView,也是通过Recycler提供的。简单介绍一下Recycler和RecyclerViewPool的内部结构。

1.Recycler里有几个ViewHolder的容器,用来存储不同状态的ViewHolder,以便之后复用。其中ViewCacheExtension类,是用户可以自定义复用机制的类。

2.RecyclerViewPool,这个可以从外部对多个RecyclerView设置同一个RecyclerViewPool,从而实现多个RecyclerView中的ViewHolder的复用。

转载自 柴泽建_Jack 感谢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章