要实现任何RecyclerView,我们需要创建ViewHolder构造函数。这个例子来自developer.android.com:
public static class ViewHolder extends RecyclerView.ViewHolder {
private final TextView textView;
public ViewHolder(View view) {
super(view);
textView = (TextView) view.findViewById(R.id.textView);
}
public TextView getTextView() {
return textView;
}
}
我不明白为什么我们需要调用super(view)?它用于调用抽象类的构造函数recyclerview。viewholder ?为什么?
抽象类RecyclerView.ViewHolder
具有public final View itemView
成员,该成员在调用RecyclerView.ViewHolder
的单个构造函数public ViewHolder(View itemView)
时赋值。如果不在扩展类的构造函数中调用super(view)
,那么itemView
将不会被赋值,从而导致许多问题。
如果你看一下RecyclerView.ViewHolder
的源代码,就更容易理解了。
recycleview。ViewHolder类没有默认的无参数构造函数。它有一个以View类型作为参数的构造函数。由于没有默认构造函数,因此必须从子类构造函数调用任何超类构造函数。
注意:在提出问题之前,我建议你在向stackoverflow发布问题之前在网上搜索一下。