2014-10-17 67 views
0

我是Android编程新手。我正在用不同类型的行在ListView上做一个示例。我创建了一个从ArrayAdapter扩展的CustomAdapter构造函数ArrayAdapter <String>(Context,int,MainActivity.ListViewItem [])未定义

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(context,resource,objects);行作为错误“构造函数ArrayAdapter(Context,int,MainActivity.ListViewItem [])未定义”

我不明白为什么会发生这种情况。请帮助。

回答

2

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

最有可能的,你应该:

  1. 使此一ArrayAdapter<ListViewItem>

  2. 删除private ListViewItem[] objects,因为它是不必要的,将会给你带来麻烦 - 使用getItem()从父访问数组

最有可能的是,您也不需要private final int resource,因为它不太可能你会使用它,但我无法排除这一点。

1
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> 
相关问题