此刻我有点无助。
我有以下代码
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...
}
}
但是eclipse标志着超级(...)线,我无法弄明白为什么。
它告诉我:
The constructor ArrayAdapter<String>(Context, int, int[], ArrayList<String>) is undefined
但是我不是这样定义的吗?
请帮帮我。
答案 0 :(得分:4)
当你使用super时,你必须调用父类定义的构造函数之一
ArrayAdapter,正如您所见here,有这个可用的构造函数:
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)
所以你必须打电话给其中一个
你打电话
super(context,textViewResourceId,itemResourceIds,list);那是 ArrayAdapter(Context,int,int [],ArrayList)并且不存在。
而不是int数组,itemResourceIds
应该是int。
如何修复它取决于itemResources [];
的内容 认为这是:ArrayAdapter(Context context, int resource, int textViewResourceId, List<String> objects)
接收xml布局文件的id,然后接收文本字段的id。
和这个
ArrayAdapter(Context context, int resource, List<T> objects)
只接收xml文件的id
可能你可能只想打电话
super(context, itemResourceIds[0],textViewResourceId, list);
或只是
super(context, itemResourceIds[0], list);
但这取决于itemResourceIds
的实际内容。
如果你正在实现整个适配器,你真的不关心你传递给父母的id,所以你可以简单地将它改为
super(context, 0, list);
因为在父类中没有人会使用它。
无论如何,如果你想自己实现一切,你可以考虑扩展BaseAdapter
而不是ArrayAdaper
,因为BaseAdapter在构造函数中不需要任何参数,可能你不需要任何功能ArrayAdapter。
答案 1 :(得分:0)
那是因为没有构造函数接受你提供的参数。在documentation中,我没有看到任何与您的参数匹配的构造函数(尤其是第三个参数,数组)
答案 2 :(得分:0)
仔细查看docs。没有构造函数接受int []作为itemResourceId(没有“s”)。 您可能正在寻找的构造函数是:
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
答案 3 :(得分:0)
查看文档:{{3}}
类ArrayAdapter
中没有构造函数将int[]
作为第三个参数,请尝试使用:
super(context, textViewResourceId, list);
答案 4 :(得分:0)
在你的代码中: “super(context,textViewResourceId,itemResourceIds,list);” “itemResourceIds”是整数不匹配的数组,即与ArrayAdapter类中的任何公共构造函数defiend都不匹配。 所以请删除它。如果您需要“itemResourceIds”,您可以存储到成员变量中。 please check this。 如果请描述“itemResourceIds”的目的。然后我会尽力帮忙。