RecyclerView 的Adapter和ViewHolder

RecyclerView 展示内容需要通过Adapter创建viewHoler,viewHolder则匹配需要显示的layout.xml。
步骤:

  1. 创建XxxAdapter。
    建立一个名为XxxAdapter的class,继承自RecyclerView.Adapter,泛型填入稍后需要创建的ViewHolder类型。
    XxxAdater的结构:
    Adapter 需要从模型层提取数据,因此通常包含一个模型的List。然后创建构造方法,参数为需要传递进来的模型的List,并将成员变量赋值。
    然后系统提示需要override三个方法:
    public int getItemCount() ,返回整型
    方法体通常返回模型List的size()。

public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) ,返回一个ViewHolder
方法体为创建一个ViewHolder,创建时需要获得ViewHolder关联的layout文件。
要layout文件正确显示需要通过LayoutInflater填充。
语法为:LayoutInflater inflater=LayoutInflater .from(Context context);
(context 可以通过getActivity获得,也可以通过parent.getContext()获得。)
View view=inflater.inflater(R.layout.xx,parent,false);
false含义为attachToRoot。
如果attachToRoot=true,则layout文件将绑定到root,并返回root的view;如果attachToRoot=false,则layout文件不绑定到root,则返回layout文件为根的View。

public void onBindViewHolder(ViewHolder holder, int position),无返回值,方法可以理解为向viewHolder中的View控件赋值需显示的内容。
position为模型List的中某个实体的下标。
通过初始化模型对象,并对holder中的成员变量赋值,如果ViewHolder中有封装方法,则可在此处调用。

  1. ViewHolder
    ViewHolder相对简单,需要建立layout文件中控件的成员变量,并创建一个参数为View 的构造方法。
    成员变量通过View.findViewById(R.Id)初始化。ViewHolder可以直接在Adapter内部通过static 关键字声明,也可以与Adapter同级,在被托管的Fragment里面声明。

如果需要在viewHolder中封装成员变量初始化代码。则可以通过在adapter的onBindViewHolder()里面调用。

在Fragment的onCreateView()里面初始化Adapter。
可以通过封装方法setAdapter()调用,方法体判断adapter是否被添加过。

你可能感兴趣的:(RecyclerView 的Adapter和ViewHolder)