构造函数 ArrayAdapter<String> 标记为 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;
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"的用途。那么我会尽力帮忙。

相关内容

最新更新