【发布时间】:2019-06-15 18:07:33
【问题描述】:
我正在实现自定义回收视图以响应具有某些参数的类的实例。为此,我实施了 VieHolders。我创建了一个抽象的 ViewHolder,这样我就可以通过两种布局来进行膨胀。但是,当我从超类继承并尝试在抽象类上实现构造函数时,它不会采用具体类的参数,并且我收到错误消息,指出父类没有可用的默认构造函数。
我期望的工作:
private abstract class CrimeHolder extends RecyclerView.ViewHolder{
public CrimeHolder(View view, ViewGroup parent, Boolean false){
super(view, parent, false);
}
然后从它扩展的类就会这样做:
private class RegularCrimeHolder extends CrimeHolder{
public RegularCrimeHolder(Inflater inflater, ViewGroup parent{
super(inflater.inflate(R.layout.list_item_crime, parent, false));
}
}
但实际发生的情况是,CrimeHolder 不能将相同的参数作为具体类传递给超构造函数,或者我得到“没有找到默认构造函数”,因此 CrimeHolder 的编写方式如下:
abstract class CrimeHolder extends RecyclerView.ViewHolder {
private CrimeHolder(View view){
super(view);
}
}
尽管我必须为 CrimeHolder 编写的构造函数只接受一个 View 参数,但我仍然必须将完整的参数传递给 RegularCrimeHolder 中的超级构造函数。为什么子类调用一个有这么多参数的超级构造函数?
【问题讨论】:
标签: java android inheritance android-recyclerview constructor