构造函数 ArrayAdapter<String>(Context, int, MainActivity.ListViewItem[]) 未定义



我是安卓编程的新手。我在ListView上用不同类型的行做了一个示例。我创建了一个从ArrayAdapter 扩展而来的CustomAdapter

public class CustomAdapter extends ArrayAdapter<String> {
    public static final int TYPE_ODD = 0;
    public static final int TYPE_EVEN = 1;
    public static final int TYPE_WHITE = 2;
    public static final int TYPE_BLACK = 3;
    private final Context context;
    private final int resource;
    private ListViewItem[] objects;
    public CustomAdapter(Context context, int resource, ListViewItem[] objects) {
        super(context, resource, objects);
        this.context = context;
        this.resource = resource;
        this.objects = objects;
    }

Eclipse显示super(上下文、资源、对象);行错误"构造函数ArrayAdapter(Context,int,MainActivity.ListViewItem[])未定义"

我不明白为什么会发生这种事。请帮忙。

尖括号中的数据类型(<String>)需要与您提供的数组中的数据类别(ListViewItem[])相匹配。在你的情况下,他们没有。

最有可能的是,你应该:

  1. 将其设为ArrayAdapter<ListViewItem>

  2. 删除private ListViewItem[] objects,因为这是不必要的,会给您带来麻烦——使用getItem()从超类访问数组

最有可能的是,您也不需要private final int resource,因为您不太可能使用它,尽管我不能排除这种可能性。

public class CustomAdapter extends ArrayAdapter<ListViewItem> {
    public static final int TYPE_ODD = 0;
    public static final int TYPE_EVEN = 1;
    public static final int TYPE_WHITE = 2;
    public static final int TYPE_BLACK = 3;
    private final Context context;
    private final int resource;
    private ListViewItem[] objects;
    public CustomAdapter(Context context, int resource, ListViewItem[] objects) {
        super(context, resource, objects);
        this.context = context;
        this.resource = resource;
        this.objects = objects;
    }

----------
see the first line of answer just change this line
public class CustomAdapter extends ArrayAdapter<String>
to
public class CustomAdapter extends ArrayAdapter<ListViewItem>

最新更新