简介
1.RecyclerView的关键成员
(1)getItemViewType(int position)
根据不同位置返回不同的类型
(2)RecyclerView.ViewHolder
类似于listview的viewholder,每个item view中所以控件成员。RecyclerView中不再需要创建,只需要继承。
(3)RecyclerView.Recycler
缓存机制,可以看一下listview的covertView,不需要再处理缓存。
2.数据处理
如图
3.RecyclerView显示流程
比如滑动列表时,滚动->调用getItemViewType(position)根据position获取holder->如果为空,调用onCreateViewHolder(),否则调用onBindViewHolder()
itemType是保存在viewHolder(继承RecyclerView.ViewHolder)中的,viewHolder是对应于position的,缓存在cache中。
public void onBindViewHolder(final MyViewHolder holder, int position)
当显示需要复用时,从cache中取holder来显示。所以看起来比较流畅。
4.RecyclerView.ViewHolder
这里面包含了所有的view,除此之外,还有position,itemType,是否被缓存的flag等基本信息
public static abstract class ViewHolder {
public final View itemView;
int mPosition = NO_POSITION;
int mOldPosition = NO_POSITION;
long mItemId = NO_ID;
int mItemViewType = INVALID_TYPE;
int mPreLayoutPosition = NO_POSITION;