为什么我们需要在ViewHolder构造函数中调用super(view) ?



要实现任何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发布问题之前在网上搜索一下。

最新更新