我此刻有点无助。
我有以下代码
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...
}
}
但日食标志着超级(…)线,我不明白为什么。
它告诉我:
The constructor ArrayAdapter<String>(Context, int, int[], ArrayList<String>) is undefined
但我不是这样定义的吗?
请帮帮我。
使用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)
所以你必须打电话给其中一个
你打电话给
super(context,textViewResourceId,itemResourceId,list);就是ArrayAdapter(Context,int,int[],ArrayList)和不存在。
itemResourceIds
应该是int,而不是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);
但这取决于CCD_ 2的实际内容。
如果您正在实现整个适配器,那么您并不真正关心传递给父级的id,所以您可以简单地将其更改为
super(context, 0, list);
因为在父类中没有人会使用它。
无论如何,如果您要自己实现所有内容,您可以考虑扩展BaseAdapter
而不是ArrayAdaper
,因为BaseAdapter不需要构造函数中的任何参数,而且可能不需要ArrayAdapter的任何功能。
这是因为没有接受您提供的参数的构造函数。在文档中,我没有看到任何构造函数与您的参数匹配(尤其是第三个参数,数组)
仔细查看文档。没有构造函数接受int[]作为itemResourceId(不带"s")。你可能正在寻找的构造函数是:
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
查看文档:http://developer.android.com/reference/android/widget/ArrayAdapter.html
类ArrayAdapter
中没有将int[]
作为第三个参数的构造函数,请尝试使用:
super(context, textViewResourceId, list);
在您的代码中:"super(context,textViewResourceId,itemResourceId,list);"整数的"itemResourceIds"数组不匹配,即与ArrayAdapter类中定义的任何公共构造函数不匹配。所以请删除它。如果您需要"itemResourceId",可以将其存储到成员变量中。请检查一下。请描述"itemResourceIds"的用途。那么我会尽力帮忙。