【发布时间】:2016-10-11 11:06:35
【问题描述】:
我想扩展 ArrayAdapter 但调用
ArrayAdapter.createFromResource(context,textArrayResId,textViewResId);
而不是
super(context,textArrayResId,textViewResId)
在 myArrayAdapter 构造函数中,但我总是得到一个 在 android.widget.ArrayAdapter 中没有可用的默认构造函数 错误。
看起来必须调用 super 是必须的,所以当我改用它时,代码编译得很好。我要求做的事可能吗?
public class myArrayAdapter<CharSequence> extends ArrayAdapter {
public myArrayAdapter(Context context, int textArrayResId, int textViewResId) {
// super(context,textArrayResId,textViewResId);
ArrayAdapter.createFromResource(context,textArrayResId,textViewResId);
}
}
【问题讨论】:
-
好吧,如果您不明确调用超级构造函数并且如果有默认构造函数可用,它会隐式调用
super(),或者您需要指定您想要的超级构造函数称呼。这是多态性的一部分.. -
你想通过调用
ArrayAdapter.createFromResource来实现什么?这里的目的不是很明显。 -
不,不是。要初始化子类,必须先初始化超类。如果不存在默认构造函数,则必须调用参数化构造函数。
标签: java android android-layout listview oop