我是安卓编程的新手。我在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[]
)相匹配。在你的情况下,他们没有。
最有可能的是,你应该:
-
将其设为
ArrayAdapter<ListViewItem>
-
删除
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>