【问题标题】:The constructor ArrayAdapter<String>(Context, int, MainActivity.ListViewItem[]) is undefined构造函数 ArrayAdapter<String>(Context, int, MainActivity.ListViewItem[]) 未定义
【发布时间】:2014-10-17 11:33:04
【问题描述】:

我是 Android 编程新手。我在 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 显示超级(上下文、资源、对象);行错误“构造函数 ArrayAdapter(Context, int, MainActivity.ListViewItem[]) 未定义”

我不知道为什么会这样。请帮忙。

【问题讨论】:

    标签: android


    【解决方案1】:

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

    您很可能应该:

    1. 将此设为ArrayAdapter&lt;ListViewItem&gt;

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

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

    【讨论】:

      【解决方案2】:
      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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多