Android 构造函数ArrayAdapter<;字符串>;是否未定义-super()已标记
我现在有点无助 我有以下代码Android 构造函数ArrayAdapter<;字符串>;是否未定义-super()已标记,android,undefined,adapter,android-arrayadapter,super,Android,Undefined,Adapter,Android Arrayadapter,Super,我现在有点无助 我有以下代码 public class ListViewAdapter<String> extends ArrayAdapter<String> { private final Context context; private final int textViewResourceId; private final int[] itemResourceIds; private final ArrayList<String> list; publ
public class ListViewAdapter<String> extends ArrayAdapter<String> {
private final Context context;
private final int textViewResourceId;
private final int[] itemResourceIds;
private final ArrayList<String> list;
public ListViewAdapter(Context context, int textViewResourceId,
int[] itemResourceIds, ArrayList<String> list) {
super(context, textViewResourceId, itemResourceIds, list);
this.context = context;
this.textViewResourceId = textViewResourceId;
this.itemResourceIds = itemResourceIds;
this.list = list;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// some code...
}
}
公共类ListViewAdapter扩展了ArrayAdapter{
私人最终语境;
私有最终int textViewResourceId;
私有final int[]itemResourceId;
私人最终阵列列表;
公共ListViewAdapter(上下文,int textViewResourceId,
int[]ItemResourceId,ArrayList列表){
super(上下文、textViewResourceId、ItemResourceId、列表);
this.context=上下文;
this.textViewResourceId=textViewResourceId;
this.ItemResourceId=ItemResourceId;
this.list=列表;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//一些代码。。。
}
}
但是eclipse标记了超级(…)线,我不明白为什么
它告诉我:
The constructor ArrayAdapter<String>(Context, int, int[], ArrayList<String>) is undefined
构造函数ArrayAdapter(Context,int,int[],ArrayList)未定义
但我不是这样定义的吗
请在此帮助我。当您使用super时,必须调用父类定义的构造函数之一 如您所见,ArrayAdapter具有以下可用构造函数:
ArrayAdapter(Context context, int resource)
ArrayAdapter(Context context, int resource, int textViewResourceId)
ArrayAdapter(Context context, int resource, String[] objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, String[] objects)
ArrayAdapter(Context context, int resource, List<String> objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)
接收xml布局文件的id,然后接收文本字段的id
还有这个
ArrayAdapter(Context context, int resource, List<T> objects)
或者只是
super(context, itemResourceIds[0], list);
但这取决于itemResourceIds
的实际内容
如果您正在实现整个适配器,那么您并不真正关心要传递给父级的id是什么,因此您可以简单地将其更改为
super(context, 0, list);
因为在父类中没有人会使用它
无论如何,如果你自己想实现所有的事情,你可以考虑扩展<代码> BaseAdvult<代码>,而不是<代码> ARAYAdvuler < /C>。因为BaseAdvor在构造函数中不需要任何参数,并且你可能不需要ARAYAdulter的任何功能。
当你使用Suffer时,您必须调用父类定义的构造函数之一
如您所见,ArrayAdapter具有以下可用构造函数:ArrayAdapter(Context context, int resource)
ArrayAdapter(Context context, int resource, int textViewResourceId)
ArrayAdapter(Context context, int resource, String[] objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, String[] objects)
ArrayAdapter(Context context, int resource, List<String> objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)
接收xml布局文件的id,然后接收文本字段的id
还有这个
ArrayAdapter(Context context, int resource, List<T> objects)
或者只是
super(context, itemResourceIds[0], list);
但这取决于itemResourceIds
的实际内容
如果您正在实现整个适配器,那么您并不真正关心要传递给父级的id是什么,因此您可以简单地将其更改为
super(context, 0, list);
因为在父类中没有人会使用它
无论如何,如果你自己想实现所有的事情,你可以考虑扩展<代码> BaseAdvult<代码>,而不是<代码> ARAYAdvuler-<代码>,因为基修器在构造函数中不需要任何参数,而且您可能不需要ArrayAdapter的任何功能。
这是因为没有构造函数接受您提供的参数。在中,我看不到任何构造函数与您的参数匹配(特别是第三个参数,数组),这是因为没有构造函数接受您提供的参数。在中,我没有看到任何构造函数与您的参数(特别是第三个参数,数组)匹配。请仔细查看。没有接受int[]作为itemResourceId(不带“s”)的构造函数。 您可能正在寻找的构造函数是:public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
仔细看一下。没有接受int[]作为itemResourceId(不带“s”)的构造函数。
您可能正在寻找的构造函数是:
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
请查看文档: 类
ArrayAdapter
中没有将int[]
作为第三个参数的构造函数,请尝试:
super(context, textViewResourceId, list);
请查看文档: 类
ArrayAdapter
中没有将int[]
作为第三个参数的构造函数,请尝试:
super(context, textViewResourceId, list);
在代码中:
super(context,textViewResourceId,ItemResourceId,list);“ItemResourceId”数组的整数不匹配,即与ArrayAdapter类中的任何公共构造函数defind不匹配。
所以请把它去掉。如果需要“ItemResourceId”,可以将其存储到成员变量中。
.
如果需要,请描述“ItemResourceId”的用途。然后我将尝试帮助您。在您的代码中:
super(context,textViewResourceId,ItemResourceId,list);“ItemResourceId”数组的整数不匹配,即与ArrayAdapter类中的任何公共构造函数defind不匹配。
所以请把它去掉。如果需要“ItemResourceId”,可以将其存储到成员变量中。
.
如果需要,请描述“ItemResourceId”的用途。然后我会尽力帮忙。谢谢你的回答,但我真的很想用我目前掌握的方式来绘制参数。难道没有办法做到这一点吗?例如,通过创建一个额外的构造函数,您的构造函数就可以了。但是,如果在itemResources ID中有一个数组,则需要知道什么表示数组中的每个项,以便可以将正确的项传递给父项。查看我的更新很抱歉,但我仍然不明白为什么不能简单地传递数组而不是int。当我调用适配器时,我传递数组并从中获取我在getView()中使用的所有ItemResourceId。所以我不知道什么代表每个项目吗?父类只需要一个唯一的字段,视图中的所有项目也是如此。这就是为什么
super()
需要int
而不是数组的原因。您可以保留构造函数,因为您正在实现自己的getView
,所以传递给父级的id并不重要,因此您只需将其更改为super(context,0,list)因为没有人会在super中使用该id。哦,super不能连接到我的构造函数?嗯,这改变了一切。我想你需要有相同的参数。非常感谢您的耐心和非常详细的回答!:)(代码工作顺便说一句)谢谢你的回答,但我真的很想用图形表示参数